通常使用EF的工作如下:
某些Web控制器调用的方法类似于:
using (var ctx = new EntityContext())
{
...
return something;
}
但我想在高负载的应用程序中,每分钟有几千个请求,它可能会产生问题。 所以我的问题是:手动打开连接并使其保持活动可能是有意义的吗? 如果是的话,是否有人可以为这样的任务共享适当的代码?
提前致谢
答案 0 :(得分:3)
不,不要试图保持已打开的连接。它只是不起作用,请参阅https://stackoverflow.com/a/9416275/870604。
您正在构建ASP.Net MVC应用程序,因此在此用例中,使用Entity Framework的模式非常简单:为每个新控制器实例实例化新上下文 (例如使用依赖注入)。当为每个用户请求创建一个新的控制器实例时,您将为每个请求提供一个新的新EF上下文,这是非常需要的。
不要担心创建大量的上下文实例,每次都不会因连接池而创建新的数据库连接。
如果您希望应用程序具有可伸缩性,那么最好的选择是在您的Entity Framework版本支持时使用异步模式。见http://blogs.msdn.com/b/webdev/archive/2013/09/18/scaffolding-asynchronous-mvc-and-web-api-controllers-for-entity-framework-6.aspx
编辑: 看看this overview of the unit of work pattern with ASP.Net MVC and EF。
答案 1 :(得分:0)
关闭using
元素的标记后,它会自动关闭连接。所以你不想担心它。但是如果你真的想手动打开连接,请尝试关注(我无法测试它。可能你需要提供连接设置)。
ctx.Database.Connection.Open();