通常与 EF 一起工作看起来像这样:
某些 Web Controller 调用具有如下内容的方法:
using (var ctx = new EntityContext())
{
...
return something;
}
但我猜想在每分钟有数千个请求的高负载应用程序中,它可能会产生问题。 所以我的问题是:手动打开连接并保持连接是否有意义? 如果是,任何人都可以分享用于此类任务的适当代码段吗?
提前致谢
最佳答案
不,不要试图保持打开的连接。它只是行不通,请参阅 https://stackoverflow.com/a/9416275/870604 .
您正在构建一个 ASP.Net MVC 应用程序,因此在此用例中使用 Entity Framework 所遵循的模式非常简单:为每个新 Controller 实例实例化一个新上下文(对于使用依赖注入(inject)的示例)。当为每个用户请求创建一个新的 Controller 实例时,您将为每个请求创建一个全新的 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 .
关于c# - 在高负载 Web 应用程序中正确使用 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603498/