2008-11-28 54 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()方法被调用的快照;您需要重新查询以查看其他更改。