MergeOption.NoTracking,ObjectContext.Detach,SetChangeTracker(Null)之间的区别

时间:2011-04-15 06:56:11

标签: entity-framework

您好
如果有人能详细说明这三者之间的区别,我是EF的新手,有时MergeOption.NoTracking恰好有效,而有时候是ObjectContext.Detach,但我从来没有得到它的要点。
我想知道我应该使用哪些情况。此外,如果有一个对象图附加到某个实体(通过触发Include函数或通过调用EntityReference.Load())如果
应该调用什么 1.)我不希望其他对象附加到实体上 2.)我想要实体引用的所有对象

非常感谢任何帮助 问候
西仁

1 个答案:

答案 0 :(得分:2)

MergeOption.NoTracking用于提高加载不会被修改的实体的性能。在这种情况下,实体不会被上下文跟踪,但它仍然附加并且延迟加载

ObjectContext.Detach从对象上下文范围中完全删除实体,因此不会跟踪实体,延迟加载不起作用

IEntityWithChangeTracker.SetChangeTracker更像EntityObject的基础设施。当实体被实现并附加到上下文时,它在EF内部被大量使用。