Heim  >  Artikel  >  Backend-Entwicklung  >  .NET Framework – Beispielcode zum Anwenden von Attributen und Reflektion zur Überprüfung der Dateneindeutigkeit

.NET Framework – Beispielcode zum Anwenden von Attributen und Reflektion zur Überprüfung der Dateneindeutigkeit

黄舟
黄舟Original
2017-03-20 11:45:151707Durchsuche

Reflexionen und Eigenschaften

Die vom .net-Framework bereitgestellten Reflexions- und Feature-Technologien können zur Überprüfung der Datenwiederholbarkeit verwendet werden, um zu entscheiden, ob ein bestimmtes Datenelement in die Datenbanktabelle geschrieben werden soll.

Anforderungen

Wenn eine Entität ein Datenelement in die Datenbank schreibt, muss häufig überprüft werden, ob es sich bei den Daten um ein Duplikat handelt, beispielsweise um eine neue Person , vorausgesetzt, die ID-Nummer kann nicht wiederholt werden, wenn die neu erstellte Personal-ID-Nummer mit einem oder mehreren Einträgen in der Personaltabelle dupliziert wird, müssen Eingabeaufforderungen gegeben oder andere Maßnahmen ergriffen werden, z. B. Aktualisieren oder Löschen.

Methode

In diesem Bedarfsszenario können Sie die Funktionen und Reflexionstechnologie des .net-Frameworks nutzen, um solche Anforderungen zu lösen. Der spezifische Prozess,
Zweitens beziehen Sie sich auf die neu geschriebene Feature-Class in der Entitätsklasse, um ihre eindeutige Kennung (eine oder mehrere Attributkombinationen) zu erstellen.
Abschließend, wenn Sie die Datenwiederholbarkeit überprüfen, Verwenden Sie die von Attribute bereitgestellte Methode, um das eindeutige Identifikationsattribut (eines oder mehrere) jeder Entitätsklasse abzurufen.
 Attribute[] GetCustomAttributes(modeltype, inherit);

KeyFieldAttribute-Attributklasse

     public class KeyFieldAttribute:Attribute
     {        private static List<string> keyfields = new List<string>();        /// <summary>
        /// 构造关键属性
        /// </summary>
        /// <param name="fields"></param>
        public KeyFieldAttribute(params string[] fields)
        {            foreach (string kf in fields)
            {                if (!keyfields.Contains(kf))
                    keyfields.Add(kf);
            }

        }        public static List<string> KeyFields
        {            get { return keyfields; }
        }
    }

Entitätsklassenmodell

[KeyField("ID")]public class Person
{  public int ID {get;set;} //人员ID
  public string Name {get;set;}//人员名称
  public DateTime BirthDate {get;set;} //出生年月日}

    [KeyField("RoleGroupID","RoleCode")]    public class Role
    {        public int RoleGroupID { get; set; } //角色组别ID
        public string RoleCode { get; set; } //角色编号
        public string RoleName { get; set; }//角色名称
    }

Achten Sie auf das Attribut Erweiterungsklasse. Hier kann das Suffix Attribut in KeyFieldAttribute weggelassen werden, sodass KeyField eine Abkürzung ist, die KeyFieldAttribute entspricht.

Feature-Klasse verwenden:

            KeyFieldAttribute.GetCustomAttributes(typeof(Person), true);
            List<string> fields = KeyFieldAttribute.KeyFields; //获取到Person实体的唯一标识属性ID

            KeyFieldAttribute.GetCustomAttributes(typeof(Role), true);            
            var fields = KeyFieldAttribute.KeyFields;//Role实体唯一属性,2个属性组合:RoleGroupID,RoleCode

Verwenden Sie die von der Funktion zurückgegebene Schlüsselattributkombination, um Daten in der Datenbank abzufragen . Wenn mindestens ein Datensatz gefunden werden kann, Folgen Sie einer bestimmten logischen Verarbeitung. Wenn nicht, können neue Daten direkt geschrieben werden. Methodenbeschreibung in der Attributklasse:

/// <summary>/// 检索应用于类型的成员的自定义特性的数组。/// </summary>
/// <param name="modeltype">要搜索的自定义特性的类型</param>
///<param name="inherit">是否搜索成员的祖先</param>
/// <returns>自定义特性的数组</returns>Attribute[] GetCustomAttributes(modeltype, inherit);

Das obige ist der detaillierte Inhalt von.NET Framework – Beispielcode zum Anwenden von Attributen und Reflektion zur Überprüfung der Dateneindeutigkeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn