访问实体框架中的模型

本文关键字:模型 框架 实体 访问 | 更新日期: 2023-09-27 17:58:03

我们有这样的实体模型的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();
     }
}

访问实体框架中的模型

问题出在哪里?它们有很多——有些在这里描述,你可以再添加一个——EF类不是线程安全的,所以在你的web应用程序中的所有请求之间共享单个上下文是非常糟糕的。上下文及其内部并不是无状态的,所以简单地共享它们是非常糟糕的主意。