1

主キーとして Id 列を含むテーブルがあります。実際には FK である他の 2 つの列に一意性を適用する必要もあります。Sql Server では、この 2 つの列に UniqueKey を作成できます。

これら 2 つのフィールドの一意性を検証できるように、EF 側で何ができますか?

4

2 に答える 2

2

EFは一意のキーをサポートしていないため、最善の回避策は、データベースで一意のキーを使用し、保存中に例外をキャッチすることです。データベースの作成中に一意のキーを作成するためにEFが必要な場合は、カスタム初期化子を使用できます。

アプリケーションで検証を行う場合は、クエリを実行してこれらのデータがまだ存在しないことを確認する必要がありますが、別のスレッド/プロセス/ユーザーがそのようなデータを作成できるため、例外をキャッチして前のアドバイスを使用する必要がありますクエリと変更の保存の間のデータ。

于 2012-06-29T14:17:29.897 に答える
-1

POCO クラスで、一意である必要がある各列をキーとしてマークします。次のように:

public MyPocoClass {
   [Key, Column(Order = 0)]
   public int Id { get; set; }

   [Key, Column(Order = 1)]
   public int Col2name { get; set; }


   [Key, Column(Order = 2)]
   public int Col3name { get; set; }
}

列の順序を設定すると、主キー列がすべて SQL データベースにまとめて表示されるので便利です。

列が他の Entity Framework コードの最初のクラスへの外部キーである場合は、プロパティに tablename_tableId という名前を付けるだけで、あとは EF が行います。いえ

public anotherClass {
       public int Id { get; set; }

       public int MyPocoClass_Id { get; set; } //this is a foreign key

    }
于 2012-06-29T14:17:54.530 に答える