在构建使用实体框架作为数据访问层的 Web 应用程序时,建议从对象上下文中分离对象以允许垃圾回收。但由于 Web 应用程序都是请求-响应应用程序,因此在响应发送给客户端后,对象上下文本身不再被任何活动对象引用,因此对象上下文及其附加的对象应该可供垃圾回收,因为没有任何活动对象引用它们。我是否遗漏了什么,或者在这种情况下分离对象是不必要的?
var source = ctx.Staff;
source.MergeOption == MergeOption.NoTracking;
var staff = (from s in source
where s.ID == 12
select s).First();
这篇文章可能会对你有所帮助。EF的设计与NHibernate类似,使用默认的有状态会话/上下文(即Windows窗体应用程序)。自从版本1发布以来,这种情况可能已经发生了改变,那是我最后一次查看它的时候。不过这有点奇怪,因为大多数人将在网站上使用它,就像NHibernate让你使用每个请求一个会话,并且并非主要是为网站而设计。
这个想法是你不需要担心更新或插入,所有操作都会自动完成。这会增加内存使用量,但如果应用程序正确管理,通常会提高性能而不是降低性能。
假设您没有保留对象上下文(以某种方式持有对其的引用),一旦它超出范围,它将被垃圾回收。我认为没有必要分离实体。
所以,我认为您没有错过任何东西。