假设我们有一个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 for Windows Phone。
答案 0 :(得分:3)
您是否尝试在第一种情况下将客户参考设置为Payment.Customer属性?
E.g。 customer.Payments.Add(new Payment { Amount = 100, Customer = customer });
我通常不会明确设置ID,但会使用ORM并在实体之间建立适当的关系。