管理 Entity Framework 中的大量连接

Managing large number of connections in Entity Framework

我正在使用 ASP.NET MVC 4 和实体框架数据库优先方法。我通常按​​以下方式进行 CURD 操作。

DashBordDataClassesDataContext context;

        public string Create(ProjectModel model)
        {
            string message = string.Empty;
            using (context = new DashBordDataClassesDataContext())
            {
                using (TransactionScope scopw = new TransactionScope())
                {
                    tblProject tb = new tblProject();
                    tb.ProjectName = model.ProjectName;
                    context.tblProjects.InsertOnSubmit(tb);
                    Save();
                }
            }

            return message;
        }

最近遇到一个系统架构师,他看了我的代码,提出了下面的问题,我无法给出正确的答案。

"How will you manage the connections when there are potentially larger number of users running the same Create method?"

他建议在多个用户之间共享一个连接。

我想知道他的方案是否实用

.Net默认使用连接池。当连接超出范围时,它会传回池中以供重用。整个事情都是围绕这个概念构建的,你必须竭尽全力去做一些不同的事情。

换句话说,ms 会为您完成所有这一切,因此您不必在代码中担心它。

在多个用户之间共享连接导致的问题多于解决的问题。例如,您如何在同一连接上同时拥有多个事务范围?不同的跨隔离也将是一个问题,在你知道你在哪里之前,你有几种不同类型的连接,你在编写大量代码以针对专门设计用于处理此问题的框架工作的世界中受到伤害.

连接的数量、它们存活的时间等都是可配置的。我只需要打两次。一次在安装程序中,一次处理支持 sql 服务器 2000 到 2010。

这确实假设(正如 EF 框架所做的那样)您没有坚持下去。例如,所有连接对象都是通过 using 语句实例化的,因此它们会在完成后立即被处理掉。

杀死你的系统架构师:=) 永远不要共享连接,或使用静态 DbContext !