私は、Visual Studio 2010のエンティティフレームワーク4.0を使用してプロジェクトを持っているI次のコードを持っている:MyEntities
は通常のEFのオブジェクトコンテキストをあるEntity Frameworkの4.0挿入新しいオブジェクトエラーが
using (var db = new MyEntities())
{
var dbLead = db.Leads.CreateObject();
dbLead.Email = lead.Email;
db.Leads.AddObject(dbLead);
db.SaveChanges();
}
。 Lead
はEF生成クラスで、データベース内の対応するテーブルにマップされます。上記のコードで割り当てられたEmail
プロパティに加えて、Lead
クラスはId
プロパティを持っていますが、ここでは明示的に設定していません。期待されているすべてのもの、奇妙なものはまだありません。
db.SaveChanges()
への呼び出しで例外が発生しました。「重複する主キー」を問題として挙げています。しかし、DBでは、対応する列が主キーとしてマークされ、.edmxデザイナーでは、対応するプロパティーがEntityKeyとしてtrue、StoreGeneratedPatternがIdentityとしてマークされます。
カップルの質問:
なぜ設計者はStoreGeneratedPatternは、対応する列が主キーに設定されている基礎となる表を想定し、それがクラスを生成し、デフォルトでアイデンティティに設定されているために十分にスマートではないでしょうか?私の場合は、デザイナーのすべてのクラスに入って、すべての主キープロパティにこの値を設定する必要がありました(興味深いことに、EntityKeyはデフォルトでtrueに設定されています)。
まだ動作していません...なぜですか?私はStoreGeneratedPatternをComputedに設定しようとしましたが、運が必要ありません。そうでなければ、Computedに設定して問題を解決した理由が分かりません。
DBMSとは何ですか? –
デフォルトのコード生成テンプレートを使用していますか? –