MVC DataContext可以共享一个连接或不共享

时间:2009-01-12 21:11:21

标签: 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, 
                                      property b= from b in ..join... select y,
                                      property c= from c in ..join... select z.}
                      )
}

OR

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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