有没有办法在实体框架中查询或访问新添加的对象(使用 ObjectContext.AddObject 方法)?我的意思是尚未使用 SaveChanges 将其保存到数据存储的情况
我知道查询被转换为底层 SQL 并针对数据存储执行,并且它还没有这个新对象。但无论如何,我很好奇 - 如果没有官方支持,也许理论上是可能的。如果不是,开发人员如何处理它?手动跟踪新对象并使用 Linq to 对象查询它们?
同样的问题也适用于 LinqToSql。
有没有办法在实体框架中查询或访问新添加的对象(使用 ObjectContext.AddObject 方法)?我的意思是尚未使用 SaveChanges 将其保存到数据存储的情况
我知道查询被转换为底层 SQL 并针对数据存储执行,并且它还没有这个新对象。但无论如何,我很好奇 - 如果没有官方支持,也许理论上是可能的。如果不是,开发人员如何处理它?手动跟踪新对象并使用 Linq to 对象查询它们?
同样的问题也适用于 LinqToSql。
在 EF 中,如果您使用此代码,您将拥有已在上下文中加载的所有实体(包括新添加的实体):
context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Unchanged).Select(o => o.Entity).OfType<YourObjectType>()
“同样的问题也适用于 LinqToSql。”
对于 LINQ-to-SQL,请查看DataContext.GetChangeSet()
; 这有3 个独立的待处理集合.Inserts
,.Updates
并且.Deletes
请注意,这是调用该方法ChangeSet
时的快照;GetChangeSet()
您需要重新查询以查看任何其他更改。