Addressテーブルに外部キーが設定されたnull許容のAddressIdを含むPersonテーブルがあります。したがって、ゼロ..1対多。
EFとObjectContextを使用して、person.Addressを呼び出して、個人のAddressオブジェクトにアクセスできます。きちんとした!
このかなり単純なコードを見て、私の問題をお話しします。
var _db = new DataContext();
Person person = _db.getThatOneGuy();
//some changes are done to the person object
person.FirstName = "Harry";
//If there's no address I want to make one
if(person.Address == null)
person.Address = new Address();
person.Address.StreetOne = "blah";
person.Address.StreetTwo = "blah";
//I decide I don't actually want this new address
person.Address = null;
_db.SaveChanges();
SaveChanges()を呼び出すと、SQL UPDATE(firstname ='Harry')が生成されますが、これはすばらしいですが、新しいアドレス(blah、blah)を追加しようとするsqlINSERTステートメントも生成されます。(SQLプロファイラーで生成されたSQLをチェックしたのでわかります)null許容ではないStateIdのようなフィールドがあるためエラーになりますが、そのアドレスを追加しようとさえしたくありません(停止しようとしたのはそれを作成することでした) null)助けてください。
注:以前は、person.Addresses.Add(addressObj)、次にperson.Addresses.Remove(addressObj)を実行できるコレクション(多対多の関係)で成功しており、ObjectContextは挿入を実行しないことを認識しています。多くのアドレス状況にこの0..1を処理する方法がわからない。
ありがとう。