我知道各种教程以及针对目标的完整示例WebApi
& Entity Framework
(甚至来自微软)WebApi
像这样的控制器:
public HttpResponseMessage GetInternet(int id) {
var context = new InternetDbContext();
var result =
(from internet in context.Internets
where internet.Id.Equals(id)
select internet).FirstOrDefault();
if(result != null)
Request.CreateResponse(HttpStatusCode.OK, result);
}
但当我了解到Entity Framework
就像两年前一样,我找到的关于该框架的每一个资源都指出了它是多么重要DISPOSE the DbContex
in the SHORTEST可能的寿命,例如和 'using
'。如今,人们似乎根本不在乎处置任何东西(他们的管理器、存储库、DI 容器......)。
我在这里错过了什么吗? API调用结束时是否会自动释放上下文?或者我必须使用类似的东西HttpRequestMessageExtensions.RegisterForDispose()
from http://msdn.microsoft.com/en-us/library/dn153859(v=vs.118).aspx http://msdn.microsoft.com/en-us/library/dn153859(v=vs.118).aspx?
就我个人而言,每当我看到类型实现时IDisposable
,我几乎可以肯定我会使用using
使用此类型的新实例时的声明。
当变量超出范围时(就像您的情况一样)context
当执行返回时变量超出范围GetInternet
方法),它的内存最终将被垃圾收集器回收,但这并不意味着任何本机处理程序(例如文件处理程序或数据库连接)将被关闭,这可能会对您的应用程序产生非常严重的负面影响。
所以,考虑always包裹一个IDisposable
进入using
构造:
using (var context = new InternetDbContext())
{
// Your code goes here
}
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)