当我使用时,有没有办法在不提交更改的情况下将对象添加到 de dataContext
ctx.Articles.AddObject(newart);
newart
不会出现在上下文中ctx
,我能够做到这一点的唯一方法是ctx.SaveChanges
保存更改,不幸的是,将更改保存到数据库,我不想这样做,有没有办法做到这一点,任何帮助都会被赞赏
当我使用时,有没有办法在不提交更改的情况下将对象添加到 de dataContext
ctx.Articles.AddObject(newart);
newart
不会出现在上下文中ctx
,我能够做到这一点的唯一方法是ctx.SaveChanges
保存更改,不幸的是,将更改保存到数据库,我不想这样做,有没有办法做到这一点,任何帮助都会被赞赏
可以在 EF4 中工作
您应该能够通过ObjectStateManager
您的ObjectContext
喜欢获取所有当前跟踪的对象
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>();
注意:由于我尚未安装 EF4,因此无法验证此解决方案。但我记得前段时间我成功地做到了这一点:)。但是,当处理非常大的对象集时,它可能不是很高效......
适用于 EF 5
您可以使用类的Local
属性DbSet
。此属性表示当前由 Context 跟踪的对象(即当前加载和/或本地添加但未删除的所有对象)。访问该Local
属性永远不会进行数据库查询。
因此,您可以使用ctx.Articles.Local
并获取包含您的newart
对象的数据集(以及先前查询加载的任何对象)