hIp*_*pPy 22 linq datacontext using linq-to-sql
有人可以根据性能,内存使用,编码的简易性,正确的事情等因素,在使用语句中包含DataContext或在LINQ-SQL中包含Data/Text之间的优缺点.
更新:在一个特定的应用程序中,我经历过,没有将DataContext包装在使用块中,随着活动对象未针对GC发布,内存使用量不断增加.在下面的示例中,如果我持有对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();
}
Run Code Online (Sandbox Code Playgroud)
DataContext没有使用和保持活着
DBDataContext db = new DBDataContext()
var q =
from x in db.Tables
where x.Id == someId
select x;
return q.toList();
Run Code Online (Sandbox Code Playgroud)
谢谢.
Nic*_*ver 11
相对于其他事物,DataContext创建起来可能很昂贵.但是,如果你已经完成它并希望尽快关闭连接,这将做到这一点,也从上下文中释放任何缓存的结果.记住你无论如何都在创造它,在这种情况下,你只是让垃圾收集器知道有更多免费的东西要摆脱.
DataContext是一个简短的使用对象,使用它,完成工作单元,离开......这正是你正在使用的东西.
所以优点:
缺点 - 更多代码?但这不应该是一种威慑,你在using
这里正确使用.
请看Microsoft解答:http: //social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/2625b105-2cff-45ad-ba29-abdd763f74fe
短版本如果你需要使用using
/ .Dispose()
:
答案简短; 不,你不必,但你应该 ......
嗯,这是一个IDisposable
,所以我想这不是一个坏主意.MSFT的人们说他们让DataContexts尽可能轻量级,这样你就可以不顾一切地放弃它们,所以你可能不会获得太多......
更不用说每个DataContext后面都是您从DB请求的所有对象的身份映射(您不想保留它).
DataContext的整个想法是具有乐观并发的工作单元.用于短期交易(仅提交一次)并处置.
不要忘记处理的最好方法是使用().
归档时间: |
|
查看次数: |
18943 次 |
最近记录: |