2011-05-30 92 views
0

我们的实体模型有这样的static属性的想法有什么问题?在实体框架中访问模型

public class Repository{ 

     private static KiaNetEntities entities = null; 
     public static KiaNetEntities{ 
      get{ return entities; } 
     } 

     static Repository(){ 
      entities = new KiaNetDbEntities(); 
     } 
} 

,并使用它像这样:

public static Customers[] GetCustomers(){ 
    var q = from c in KiaNetEntities.Customers where c.Activated select c; 
    return q.ToArray(); 
} 

public static Customers[] AddToCustomerSalary(int customerId, decimal newValue){ 
    var q = from c in KiaNetEntities.Customers 
    where c.Activated && c.ID == customerId 
    select c; 

    if(q.Count() > 0){ 
       var customer = q.First(); 
       customer.Salary += newValue; 
       KiaNetEntities.SaveChanges(); 
    } 
} 
+0

不知道你的问题是什么。为什么“GetCustomers”和“AddToCustomerSalary”方法是静态的? – IndigoDelta 2011-05-30 12:45:48

回答

1

问题是什么?其中有相当多的 - some are described here,你可以再添加一个--EF类不是线程安全的,因此在你的web应用程序的所有请求之间共享单个上下文将会恶化。上下文及其内部并不是无状态的,因此简单地分享它们是非常糟糕的主意。