2009-01-12 48 views
0

什么时候“工作单元”不再是“单元”?哪种情况在资源上更好?第一个创建连接wheras第二创建4MVC DataContext确定是否共享一个连接

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

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

1

一般来说不太往返数据库越好。然而,在高规模的应用程序中,我们经常会让数据库变得越来越“愚蠢”,所以我们最终不做任何连接,因此我们不会在SQL数据库服务器上绑定CPU和内存。这实际上取决于你发现哪些资源更为稀缺。如果你的SQL服务器有足够的资源,那么加入它,否则单独拉回来会更好。你是否在SQL分析器中查看了这个结果?你确定它有4个连接,或者只有4个独立的电话?