Предположим, у нас есть Customer
объект с коллекцией Payments
.
Инициализация:
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 для Windows Phone.