c# - 在高负载 Web 应用程序中正确使用 Entity Framework

标签 c# entity-framework asp.net-mvc-4 architecture

通常与 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/

相关文章:

c# - Linq-to-Entities 加入与 GroupJoin

asp.net-mvc - 使用 Entity Framework 6 和 ViewModel 从数据库表中填充 ASP.NET MVC 中的 DropDownList

c# - Entity Framework 代码优先多列外键

c# - 错误 : Connection Entity Framework with MySQL C#

c# - 基于声明的表单例份验证角色

c# - InstallShield Basic MSI Project 安装程序在安装升级后丢失 "Log On As"

c# - C# 中字符串的正则表达式

c# - 如何条件正则表达式

visual-studio-2010 - 非 mvc 项目 visual studio 中的 "add view"

javascript - <文本>或@: not working in MVC4