Maison > développement back-end > Tutoriel C#.Net > .NET Framework - Exemple de code pour appliquer des attributs et une réflexion afin de vérifier l'unicité des données

.NET Framework - Exemple de code pour appliquer des attributs et une réflexion afin de vérifier l'unicité des données

黄舟
Libérer: 2017-03-20 11:45:15
original
1751 Les gens l'ont consulté

Réflexions et propriétés

Les technologies de réflexion et de fonctionnalités fournies par le framework .net peuvent être utilisées pour vérifier la répétabilité des données afin de décider d'écrire ou non un certain élément de données dans la table de la base de données.

Exigences

Lorsqu'une entité écrit une donnée dans la base de données, il est souvent nécessaire de vérifier si les données sont un doublon, comme une nouvelle personne , en supposant que le numéro d'identification ne peut pas être répété. Si le numéro d'identification du personnel nouvellement créé est dupliqué avec une ou plusieurs entrées dans le tableau du personnel, des invites doivent être données ou d'autres mesures doivent être prises, telles que la mise à jour ou la suppression.

Méthode

Dans ce scénario de demande, vous pouvez utiliser les fonctionnalités et la technologie de réflexion fournies par le framework .net pour résoudre ces besoins. Le processus spécifique,
Deuxièmement, se référer à la classe de fonctionnalités nouvellement écrite dans la classe d'entité pour construire son identifiant unique (une ou plusieurs combinaisons d'attributs
Enfin, lors de la vérification de la répétabilité des données); Utilisez la méthode fournie par Attribute pour obtenir l'attribut d'identification unique (un ou plusieurs) de chaque classe d'entité.
 Attribute[] GetCustomAttributes(modeltype, inherit);

Classe d'attribut KeyFieldAttribute

     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; }
        }
    }
Copier après la connexion

Modèle de classe d'entité

[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; }//角色名称
    }
Copier après la connexion

Faites attention à l'attribut classe d'extension, ici, le suffixe Attribute dans KeyFieldAttribute peut être omis, donc KeyField est une abréviation équivalente à KeyFieldAttribute.

Utiliser la classe d'entités :

            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
Copier après la connexion

Utilisez la combinaison d'attributs clés renvoyée par la fonctionnalité pour interroger les données dans la base de données si au moins un enregistrement peut être trouvé, suivez un certain traitement logique ; sinon, de nouvelles données peuvent être écrites directement. Description de la méthode fournie dans la classe Attribute :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal