在没有SaveChanges的情况下将对象添加到Context EntityFramework 4

时间:2012-12-09 11:58:12

标签: c# entity-framework-4 datacontext

当我使用

时,有没有办法在不提交更改的情况下将对象添加到de dataContext
ctx.Articles.AddObject(newart);

newart 在上下文ctx中没有出现,我能够做到这一点的唯一方法就是保存更改ctx.SaveChanges,不幸的是保存对数据库的更改,&我不想,有没有办法做到这一点,任何帮助将赞赏

1 个答案:

答案 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对象的数据集(以及先前查询加载的任何对象)