当我使用
时,有没有办法在不提交更改的情况下将对象添加到de dataContextctx.Articles.AddObject(newart);
newart
在上下文ctx
中没有出现,我能够做到这一点的唯一方法就是保存更改ctx.SaveChanges
,不幸的是保存对数据库的更改,&我不想,有没有办法做到这一点,任何帮助将赞赏
答案 0 :(得分:3)
可以在EF4中使用
您应该可以通过ObjectStateManager
的{{1}}获取所有当前跟踪的对象
ObjectContext
注意:由于我没有安装EF4,因此无法验证此解决方案。但我记得很久以前成功地完成了这个:)。使用非常大的对象集时,它可能不是非常高效...
适用于EF 5
您可以使用var articles = ctx.ObjectStateManager
// Get all entries for added/changed/modified entities
.GetObjectStateEntries(EntityState.Added |
EntityState.Unchanged |
EntityState.Modified)
// select the entity objects from the entries
.Select(entry=>entry.Entity)
// we're only interested in Article objects
.OfType<Article>();
类的Local
属性。此属性表示Context当前跟踪的对象(即当前加载和/或本地添加的所有对象,而不删除这些对象)。访问DbSet
属性永远不会进行数据库查询。
因此,您可以使用Local
并获取包含ctx.Articles.Local
对象的数据集(以及先前查询加载的任何对象)