我正在浏览GitHub(https://github.com/MarlabsInc/SocialGoal)上提供的SocialGoal Application代码,以尝试理解MVC5。
在浏览Datalayer(Social.Data.Infrastructure)时,项目(https://github.com/MarlabsInc/SocialGoal/tree/master/source/SocialGoal.Data/Infrastructure)使用名为DatabaseFactory.cs的单独文件。它的目的只是创建DataContext并将其丢弃。
除了创建像DatabaseFactory.cs这样的单独文件而只是为了初始化datacontext而不是在UnitofWork中创建datacontext之外,还有其他好处,就像在这里为单元工作模式http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application所解释的那样。下面是asp.net mvc教程中用于工作单元的示例代码。
public class UnitOfWork : IDisposable
{
private SchoolContext context = new SchoolContext();
private GenericRepository<Department> departmentRepository;
private GenericRepository<Course> courseRepository;
.....
.....
}