2013-09-24 19 views
0

的屬性沒有保存我這種情況我現有的對象:爲什麼當我把它設置爲另一個現有對象

var customer = unitOfWork.Customers.FirstOrDefault(c => c.Id == 1); // existing customer 
var certificate = unitOfWork.Certificates.FirstOrDefault(c => c.Id == 1); // existing certificate 

certificate.Customer = customer; 

unitOfWork.SaveChanges(); 

的結果是,沒有更新發生。當我檢查ChangeTracker.Entities時,我發現我的證書已設置給客戶。但我也看到StateUnchanged ......這怎麼可能?我給了一個變量值(certificate.Customer = customer;)並且沒有發生變化?

我在這裏錯過了什麼?

+0

證書是否有屬性'CustomerId'?嘗試設置此'certificate.CustomerId = customer.Id',然後調用SaveChanges – Jehof

+0

不,它不。我們正在處理導航屬性。 – Martijn

+1

unitOfWork是一個DbContext還是一些自定義類型?使用EF5和DbContext,您描述的場景應該保存更改。 –

回答

0

您不需要再次將更新的證書添加到數據庫。更新數據後,只需使用SaveChanges()方法。如果您想在更新後添加新記錄,則必須克隆整個證書對象。

+0

我試過在'certificate.Customer = customer'後面調用SaveChanges(),但這不起作用。 – Martijn

相關問題