ホームページ  >  記事  >  バックエンド開発  >  .NET Framework - データの一意性をチェックするために属性とリフレクションを適用するサンプル コード

.NET Framework - データの一意性をチェックするために属性とリフレクションを適用するサンプル コード

黄舟
黄舟オリジナル
2017-03-20 11:45:151719ブラウズ

反射とプロパティ

.net Framework によって提供されるリフレクションおよび機能テクノロジを使用して、データの再現性をチェックし、特定のデータをデータベース テーブルに書き込むかどうかを決定できます。

要件

エンティティがデータベースにデータを書き込むとき、たとえば、ID 番号が重複できないことを前提として、新しく作成された個人の場合、データが重複しているかどうかを確認する必要があることがよくあります。 、この時点で新しく作成された個人の ID。この番号が人事テーブルの 1 つ以上のエントリと重複している場合は、プロンプトを表示するか、更新または削除などの他の措置を講じる必要があります。

方法

この需要シナリオでは、.net Framework が提供する機能とリフレクション テクノロジを使用して、そのようなニーズを解決できます。具体的なプロセスは、
次に、エンティティクラスで新しく書き込まれた属性クラスを参照して、その一意の識別子(1つ以上の属性の組み合わせ)を構築します
最後に、データの再現性をチェックするときに、Attributeが提供するメソッドを使用してそれぞれを取得します。各エンティティ クラスの一意の識別属性。
Attribute[] GetCustomAttributes(modeltype, inherit);

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; }
        }
    }

entityクラスModel

[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; }//角色名称
    }

ここで、KeyFieldAttributeの接尾辞Attributeは省略できるので、KeyFieldは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

機能によって返されたキー属性の組み合わせを使用して、データベース内のデータを

クエリ 少なくとも 1 つのレコードが見つかった場合、そのレコードは特定のロジックに従って処理されます。直接書き込むことができます。属性クラスで提供されるメソッドの説明:

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

以上が.NET Framework - データの一意性をチェックするために属性とリフレクションを適用するサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。