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.
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.
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);
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; } } }
[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; }//角色名称 }
Faites attention à l'attribut classe d'extension, ici, le suffixe Attribute dans KeyFieldAttribute peut être omis, donc KeyField est une abréviation équivalente à KeyFieldAttribute.
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
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);
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!