私はEF4.1コードファーストを使用しています。私は、関連するエンティティIDを保存するための非常に簡単な挿入を取得することはできません。生成されたSQLは、関連するエンティティに対して常にNULLを挿入します。コードの例を以下に示します。誰も私がここで間違っているのを見ることができますか?文字列などのエンティティ以外のプロパティを正しく挿入します。また、DBイニシャライザクラスに類似のコードがあり、テストデータをシードするとうまくいくようです。EF4.1コード最初に関連エンティティを持つエンティティを追加
using (var ctx = new DataContext())
{
ctx.Users.Attach(existingUser);
// create item and add to context
var newItem = new MyItem();
ctx.MyItems.Add(newItem);
// set related entity
newItem.CreatedBy = existingUser;
ctx.SaveChanges();
}
私は本当に変更検出をfalseに設定しました。上記のようにコードを移動すると、問題が解決されました。助けてくれてありがとう。私は、プロパティを変更したことを示すための何らかの方法もなければならないと思いますか?既存のエンティティを更新する場合はどうでしょうか? –
'ctx.Entry(existingItem).State = EntityState.Modified'は、既存のエンティティが接続されている場合の解決策です。 –
@Barry:状態を手動で「Modified」に設定すると、* full * SQL文が更新されることに注意してください。*すべてのプロパティは、実際に変更されたかどうかに関係なく、サーバーに送信されます。多くの場合、元のオブジェクトをDBから取得し、変更されたプロパティをそのオブジェクトにマージする方がパフォーマンスが向上します。 EFはこれらの変更を追跡し、実際に変更されたプロパティを持つ更新コマンドのみを送信します。 – Slauma