2011-05-22 89 views
3

我在做SaveChanges之前做了幾個插入命令。查詢連接的實體

有沒有辦法查詢附加的實體(我現在插入SaveChanges之前)以檢查是否添加或更新了特定的記錄?

回答

2

是的,有一種方法。 ObjectContext實例提供名爲ObjectStateManger的屬性。 ObjectStateManager管理所有連接的實體,它知道他們的狀態:

ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(attachedEntity); 
EntityState state = entry.State; 

如果你需要得到所有修改或添加的實體,您可以使用:

var entities = context.ObjectStateManager 
         .GetObjectStateEntries(EntityState.Added | EntitiSate.Modified) 
         .Select(e => e.Entity); 

您還可以使用OfType選擇一些唯一實體類型。您也可以在堆棧溢出中多次使用此邏輯SaveChanges - 例如here

+0

您是否知道如何將ObjectStateManager方法封裝到接口中以便我不依賴於數據庫層? – Naor 2011-05-22 13:07:43

+0

只需檢查MSDN:http://msdn.microsoft.com/en-us/library/system.data.objects.objectstatemanager.aspx,你可以看到'ObjectStateManager'沒有實現任何接口,所以如果你想要任何包裝你必須定義你自己的界面並創建你自己的包裝類。 – 2011-05-22 13:29:06

相關問題