【问题标题】:MVC DataContext Ok to Share One Connection or NotMVC DataContext 是否可以共享一个连接
【发布时间】:2009-01-12 21:11:20
【问题描述】:

“工作单元”何时不再是“单元”?哪个场景在资源上更好?第一个创建一个连接,而第二个创建 4 个。

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a= from a in ..join... select x, 
                                      property b= from b in ..join... select y,
                                      property c= from c in ..join... select z.}
                      )
}

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a = GetPropertyA(), 
                                      property b = GetPropertyB(),
                                      property c = GetPropertyC()}
                      )
}

【问题讨论】:

    标签: asp.net-mvc linq datacontext


    【解决方案1】:

    使用 LINQ 时,如果您将一个实体添加到另一个实体并且它们使用不同的数据上下文,您将会收到错误消息。我建议为您使用的每个工作单元保留相同的数据上下文。通过使用存储库模式编写数据访问类,您可以轻松识别正在处理的工作单元。如果您不清楚存储库模式,check out this entry

    【讨论】:

      【解决方案2】:

      一般来说,您的数据库往返次数越少越好。然而,在大规模应用程序中,我们经常使我们的数据库变得越来越“愚蠢”,因此我们最终没有进行任何连接,因此我们不会占用 SQL 数据库服务器上的 CPU 和内存。这实际上取决于您发现哪些资源更稀缺。如果您的 SQL 服务器有大量资源,请在那里进行联接,否则单独将其拉回会更好。您是否在 SQL 分析器中查看过此结果?您确定是 4 个连接,还是只是 4 个单独的调用?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 2015-09-08
        • 1970-01-01
        • 2010-10-24
        相关资源
        最近更新 更多