有人可以就性能,内存使用量,编码的难易程度,正确的操作等因素在使用using语句包装DataContext或不使用LINQ-SQL中表达其优缺点的意见。
更新:在一个特定的应用程序中,我体验到,没有将DataContext包装在using块中,由于没有为GC释放 Activity 对象,因此内存使用量一直在增加。如下面的示例所示,如果我持有对q个对象的列表和q个访问实体的引用,则创建的对象图不会发布给GC。
使用DataContext
using (DBDataContext db = new DBDataContext())
{
var q =
from x in db.Tables
where x.Id == someId
select x;
return q.toList();
}
不使用并保持 Activity 状态的DataContext
DBDataContext db = new DBDataContext()
var q =
from x in db.Tables
where x.Id == someId
select x;
return q.toList();
谢谢。
最佳答案
相对于其他事物,创建DataContext可能会很昂贵。但是,如果您已完成此操作并希望尽快关闭连接,则可以这样做,同时也释放上下文中的所有缓存结果。请记住,无论如何都要创建它,在这种情况下,您只是让垃圾收集器知道还有更多免费的东西可以摆脱。
使DataContext成为一个短期使用的对象,使用它,完成工作单元,离开……这正是您正在使用的功能。
这样的优点:
缺点-更多代码?但这不应该起到威慑作用,您在这里正确使用了
using
。在这里查看Microsoft答案:http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/2625b105-2cff-45ad-ba29-abdd763f74fe
如果需要使用
using
/ .Dispose()
的简短版本:关于linq - 在LINQ-SQL中,包装DataContext是using语句-优点缺点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2292462/