MVC3 EF Единица работы + Универсальный репозиторий + Ninject
Я новичок в MVC3 и следую замечательным учебникам на веб-сайте asp.net. Однако я не могу полностью понять, как использовать шаблоны единиц работы и универсального репозитория с Ninject. Я использовал этот учебник в качестве отправной точки:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net- MVC-приложения
Без использования интерфейсов я знаю, что могу реализовать это так:
Общий репозиторий:
public class GenericRepository<TEntity> : IGenericRepository<TEntity>
where TEntity : class
{
internal MyContext context;
internal DbSet<TEntity> dbSet;
public GenericRepository(MyContext context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
}
Единица работы:
private MyContext context = new MyContext();
private GenericRepository<Student> studentRepository;
private GenericRepository<Course> courseRepository;
public GenericRepository<Student> StudentRepository
{
if (this.studentRepository == null)
{
this.studentRepository = new GenericRepository<Student>(context);
}
return studentRepository;
}
public GenericRepository<Course> CourseRepository
{
if (this.courseRepository == null)
{
this.courseRepository = new GenericRepository<Course>(context);
}
return courseRepository;
}
Эта настройка позволяет мне передавать один и тот же контекст во все репозитории, а затем вызывать одну функцию Save () для фиксации изменений.
Я знаю, что могу использовать интерфейсIGenericRepository<TEntity>
и конкретная реализацияGenericRepository<TEntity>
а затем свяжите их, используя Ninject:
kernel.Bind(typeof(IGenericRepository<>)).To(typeof(GenericRepository<>));
Но как бы я настроить моиIUnitOfWork
а такжеUnitOfWork
убедиться, что все мои репозитории имеют общий контекст базы данных? Я вообще делаю это правильно с самого начала? Я искал вокруг, но все, что мне кажется, это учебные пособия, в которых используются только общие репозитории без единицы работы.