虽然人们可能认为这是一个基于观点的问题,但是对于这个问题有一个非常真实的客观答案。
在任何涉及到线程、多用户或多个“视图”的情况下使用静态数据上下文都是一个极其糟糕的想法。
让我们来看一下这里:
public static List<Employee> InsertEmployee(Employee e)
{
dataContext.Employees.Add(e);
dataContext.SaveChanges();
return GetAllEmployees();
}
看起来很无害,对吧?错了。这个方法会保存上下文检测到的任何更改。这包括其他用户和/或线程所做的更改。
例如,我们正在获取系统中的所有员工。我们没有告诉实体框架不要跟踪这些实体。
public static List<Employee> GetAllEmployees()
{
var query = from employee in dataContext.Employees
select employee;
return query.ToList();
}
因此,如果一个线程加载了员工信息并更改了姓名(但尚未保存),然后另一个页面调用InsertEmployee
,那么姓名更改也将被保存。
我想不出在ASP.NET应用程序中静态数据上下文不是一个可怕的想法的情况。
没有任何好的理由。
虽然将其实现为静态存储库,但他失去了依赖注入和单元测试的能力,而没有获得任何真正的优势。