2014-03-06 119 views
0

我正在使用EF 4.1並希望使用臨時對象執行一些檢查。實體框架使用臨時對象

我遇到的問題是,只要我保存任何更改,這些對象就會寫回數據庫。我試圖分離這些對象,但是隨後整個對象圖被切碎了,我無法訪問這些檢查所需的引用對象。

我的代碼基本上是這樣的:

createTempOrder() 
{ 
    Order order = new Order(); 
    order.Customer = dbContext.Customers.Single(c => c.ID == cID); 
    dbContext.Detach(order); 
    return order; 
} 

是否有EF處理臨時對象的最佳做法或做我需要重寫支隊程序?

在此先感謝

回答

0

如果你不想EF跟蹤你的實體,您可以使用AsNoTracking()方法:當然

order = dbContext.Orders.AsNoTracking().Single(o => o.ID == oID); 

這個作品,如果訂單是由EF管理的實體。

+0

我的訂單未包含在數據庫中。它只能在代碼中存在,這就是爲什麼我不能設置Notracking屬性的原因。 – narain

+0

如果我理解你正在嘗試實現的內容,可以創建一個新的Context實例來執行這些檢查然後進行處理。通過這種方式,您所做的更改不應在其他情況下「可見」。 – Mones

+0

我仍然需要在另一個上下文中引用的對象。在訂單檢查完成之後,將客戶實體添加到報告中,然後將報告添加到數據庫中。 – narain