0
Payments
のコレクションを持つCustomer
オブジェクトがあるとします。コレクションに新しいアイテムを追加して保存する
初期化:
var dataContext = new TestDataContext();
dataContext.Customers.InsertOnSubmit(new Customer { Id = 1, Name = "Customer1" });
dataContext.SubmitChanges();
var customer = dataContext.Customers.Where(c => c.Id == 1).First();
最初のケース:
customer.Payments.Add(new Payment { Amount = 100, CustomerId = customer.Id });
dataContext.SubmitChanges();
var count = dataContext.Payments.Count(); // count == 0
第二の場合:
dataContext.Payments.InsertOnSubmit(new Payment { Amount = 100, Customer = customer });
dataContext.SubmitChanges();
var count = dataContext.Payments.Count(); // count == 1
第三のケース(合成):
customer.Payments.Add(new Payment { Amount = 100, CustomerId = customer.Id });
dataContext.Payments.InsertOnSubmit(new Payment { Amount = 100, Customer = customer });
dataContext.SubmitChanges();
var count = dataContext.Payments.Count(); // count == 2 (!)
InsertOnSubmit
はどういうわけかDataContext
オブジェクトに変更について通知するとします。しかし、なぜ最初のケースで通知されていないのか疑問に思っただけですか?
P.S.私はSQL CE for Windows Phoneを使用しています。