0

主キーを持たないテーブルは LINQ のウィザードに表示されず、dbml ファイルにドラッグできないことがわかりました。誰かが同じ行動に直面しましたか? LINQ を介してアクセスするためにテーブルに主キーが必要な理由を説明できる人はいますか?

4

1 に答える 1

1

Entity Framework が正しく機能するには、主キー (または何らかのキー) が必要です。これは、データ コンテキストによって引き出されたエンティティには、それ自体を他のエンティティと区別する (および一致させる) 方法が必要なためです。次の例を見てください。

// Two different variables, but should pull the same entity.
var entity1 = context.Entities.First();
var entity2 = context.Entities.First();

entity2.PropertyA == "OldValue" // Evaluates to true.

entity1.PropertyA = "NewValue";
context.SaveChanges();

// entity2 is updated despite not having its property directly modified
// by this code.
entity2.PropertyA == "NewValue" // Evaluates to true.

これらのエンティティは、主キーを介してデータベース内で一意であることがわかっているエンティティ キーを介して相互に同期されます。これを手動でマップして、各エンティティを識別するものを EF に伝えることはできますが、自動的に把握することはできません。質問の「ウィザードでできない理由」の部分の詳細については、この回答を参照してください。

于 2013-10-17T13:06:09.980 に答える