2008-11-28 53 views
5

有沒有一種方法來查詢或剛剛接觸新添加的對象實體框架(使用ObjectContext.AddObject方法)?我的意思的情況時尚未保存到數據存儲使用的SaveChanges是查詢新增對象可以在MS實體框架

據我所知,查詢轉換爲基礎SQL和針對數據存儲執行,它沒有這個新的對象呢。但無論如何,我很好奇 - 如果它不是得到特別支持的話,理論上也許是可能的。如果不是,開發人員可以如何處理它?手動跟蹤新對象並使用Linq將其查詢到對象?

同樣的問題也適用於LinqToSql。

回答

7

在EF,如果您使用此代碼,您有已經加載在上下文中的所有實體(包括新增加的):

context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Unchanged).Select(o => o.Entity).OfType<YourObjectType>() 
+0

謝謝,我不再與EF合作,但這有希望有用。 – Vladekk 2009-03-24 08:58:42

2

「同樣的問題也適用於LinqToSql。」

對於LINQ到SQL,看看DataContext.GetChangeSet();這具有3 separate collections爲未決.Inserts.Updates.Deletes

注意,ChangeSet是當GetChangeSet()方法被調用的快照;您需要重新查詢以查看其他更改。