hqt*_*hqt 1 entity-framework asp.net-mvc-4
如果我的问题是正常的,我很抱歉.但是当我使用Entity Framework 5设计我的ASP.NET MVC 4.0应用程序时,我遇到了这个问题.
如果我选择Eager Loading,我只是简化使用:
public Problem getProblemById(int id) {
using(DBEntity ctx = new DBEntity ())
{
return (Problem) ctx.Posts.Find(id);
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我使用Eager Loading,我将遇到问题:当我想浏览其所有属性时,例如评论(问题),用户(问题)......我必须手动使用Include以包含这些属性.有时,如果我不使用这些属性,我将失去性能,也许我失去了实体框架的力量.
如果我使用延迟加载.有两种方法可以使用DBContext对象.第一种方法是在本地使用DBContext对象:
public Problem getProblemById(int id) {
DBEntity ctx = new DBEntity ();
return (Problem) ctx.Posts.Find(id);
}
Run Code Online (Sandbox Code Playgroud)
使用这个,我认为会遇到内存泄漏,因为ctx永远不会再次处理.
第二种方法是使DBContext对象静态并全局使用它:
static DBEntity ctx = new DBEntity ();
public Problem getProblemById(int id) {
return (Problem) ctx.Posts.Find(id);
}
Run Code Online (Sandbox Code Playgroud)
我读了一些博客,他们说,如果我使用这种方式,我必须自己控制并发访问(因为多请求发送到服务器),我自己,OMG.例如这个链接:
那么,如何设计我的应用程序,请帮我弄清楚.
谢谢 :)
不要使用静态DBContext对象.请参阅c#在多线程服务器中使用Entity Framework
ASP.Net MVC的一个简单规则:DBContext每个用户请求使用一个实例.
至于使用延迟加载与否,我会说这取决于,但我个人会停用延迟加载.IMO它是一个破碎的功能,因为它有一些基本问题:
| 归档时间: |
|
| 查看次数: |
2597 次 |
| 最近记录: |