您应该在MVC中处置Entity Framework对象吗?

时间:2011-12-22 14:08:32

标签: asp.net-mvc-3 entity-framework

我正在开发一个MVC3应用程序,并一直在想着以下内容。是否应在将数据传递给视图之前处置实体框架对象(DbContext对象?

这个问题的一个明显问题是你将无法深入研究外键关系。

这样做是否会影响性能?

4 个答案:

答案 0 :(得分:4)

是的,你绝对应该处理上下文 性能打击应该是最小的。任何可以处理的物体都应该一直处理掉。 如果正确完成,依赖注入可以让您不必担心调用它,因为如果指示DI框架将为您处理它。

答案 1 :(得分:2)

不要将EF实体传递到视图中,请使用视图模型模式。并且不要过分依赖延迟加载,它会表现不佳。使用Include方法急切加载所需的对象。

是的,你需要处理(或者最好使用),否则你的系统会泄漏连接,并且可能会在非常重要的负载下饿死池。

答案 2 :(得分:2)

同意Adam Tuliper的回答。另外,如果您需要访问相关对象,可以使用.Include(o => o.EntityName)方法来确保数据包含在数据检索中。

此博客正在撰写关于加载相关对象的文章: http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx

答案 3 :(得分:1)

如果,通过" entityframe工作对象"你的意思是DbContext对象,然后不,不要担心它。

...此外,这应该是一个控制器级别的对象,而不是一级视图。