【发布时间】:2014-01-23 12:48:24
【问题描述】:
在此过程中,我正在编写一个 Web 应用程序和学习实体框架。如果我做错了什么,我很好奇。查询时我没有使用 dispose 或 using 语句。
我的存储库示例:
public User GetUserById(int sessionId)
{
var user = (from u in db.Users where u.Id == sessionId select u).SingleOrDefault();
return user;
}
我从中选择的用户表将具有与其他表相关联的外键。很酷的事情,或者我认为,关于实体是我可以返回整个用户对象(由实体构建),然后我可以在我的控制器中执行类似 User.MyOtherTable.SomeColumn 的操作。
问题是我依靠这个并在我的控制器中以我的快乐方式获取用户信息以及利用来自另一个表的信息。我现在意识到,如果我像下面的代码那样关闭该连接:
public User GetUserById(int sessionId)
{ using(db)
{
var user = (from u in db.Users where u.Id == sessionId select u).SingleOrDefault();
return user;
}
}
我的控制器无法再访问User.MyOtherTable.SomeColumn,因为这将为空。我真正的问题是,在我的实体应用程序中使用 dispose 对我来说有多重要?
【问题讨论】:
标签: c# asp.net-mvc entity-framework dispose