假設我們有一個具有Order對象的Customer對象。 Order對象具有OrderDetail對象。更改實體框架中的實體狀態4.1
Customer oCustomer
using(var context = new MyContext)
{
oCustomer = context.Include("Order.OrderDetail").Find(1);
}
oCustomer.Name ="blah blah";
oCustomer.Order.Description = "blah blah";
oCustomer.Order.OrderDetail.Quantity = 10;
現在,當我改變客戶的狀態如下:
using(var context = new MyContext)
{
context.Entry(oCustomer).State = EntityState.Modified.
context.SaveChanges();
}
這僅保存oCustomer對象,而不是訂單和的OrderDetail是在oCustomer。由於context.Entry(oCustomer).State = EntityState.Modified僅改變oCustomer的狀態,而不改變Order和OrderDetail的狀態。目前,我必須手動更改ObjectGraph中每個實體的狀態,以便保存更改。有什麼辦法可以改變整個ObjectGraph的狀態,而不是隻改變父實體的狀態嗎?有沒有擴展方法或其他方法可以做到這一點?
謝謝。有用!!但它是一個優雅的解決方案嗎?每次我們必須保存它們時,我們都會重新加載實體。 – Baig
如果您擁有可以新建實體的所有實體信息,請將它們全部附加到上下文,並將它們全部設置爲已修改,然後調用savechanges。見http://stackoverflow.com/questions/7001602/asp-net-mvc-with-ef-4-1-navigation-properties/7008849#7008849只適用於簡單的場景。 – BennyM