2011-12-17 29 views
0

假設我們有一個收集PaymentsCustomer物品。向收藏中添加和保存新物品

初始化:

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.我正在爲Windows Phone使用SQL CE。

回答

3

您是否嘗試在第一種情況下將Payment.Customer屬性設置爲客戶參考?

E.g. customer.Payments.Add(new Payment { Amount = 100, Customer = customer });

我通常不會顯式設置ID,而是使用ORM並在實體之間建立適當的關係。