Предположим, у нас есть объект 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.