Asp.net mvc MVC DataContext是否可以共享一个连接

Asp.net mvc MVC DataContext是否可以共享一个连接,asp.net-mvc,linq,datacontext,Asp.net Mvc,Linq,Datacontext,什么时候“工作单位”不再是“单位”?哪种方案在资源方面更好?第一个创建一个连接,而第二个创建4个连接 using (DataContext dc=new DataContext) { var orders= from o in dc.orders select ( new Product { property a= from a in ..join... select x, pro

什么时候“工作单位”不再是“单位”?哪种方案在资源方面更好?第一个创建一个连接,而第二个创建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.}
                      )
}


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

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

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

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

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