具有工作单元的 MVC 存储库模式
MVC repository pattern with unit of work
我已经在 MVC 应用程序中实现了带有工作单元的存储库模式。这是实现:
public interface IUnitOfWork
{
IStudentRepository Students { get; }
ICourseRepository Courses { get; }
void Complete();
}`
` `
public class UnitOfWork : IUnitOfWork
{
private readonly ApplicationDbContext _context;
public IStudentRepository Students { get; private set; }
public ICourseRepository Courses { get; private set; }
public UnitOfWork(ApplicationDbContext context)
{
_context = context;
Students = new StudentRepository(_context);
Courses = new CourseRepository(_context);
}
public void Complete()
{
_context.SaveChanges();
}
}
`
我的问题是,当我有 100 个存储库时,启动存储库的最佳方法是什么?
谢谢
我从该视频的一条评论中找到了答案:https://www.youtube.com/watch?v=rtXpYpZdOzM
我可以像下面这样使用 getter,而不是在构造函数中初始化存储库:
public class UnitOfWork : IUnitOfWork
{
private readonly ApplicationDbContext _context;
private ICourseRepository _courses = null;
private IStudentRepository _students = null;
public UnitOfWork(ApplicationDbContext context)
{
_context = context;
}
public ICourseRepository Courses => _courses ?? (_courses = new CourseRepository(_context));
public IStudentRepository Students => _students ?? (_students = new StudentRepository(_context));
我已经在 MVC 应用程序中实现了带有工作单元的存储库模式。这是实现:
public interface IUnitOfWork
{
IStudentRepository Students { get; }
ICourseRepository Courses { get; }
void Complete();
}`
` `
public class UnitOfWork : IUnitOfWork
{
private readonly ApplicationDbContext _context;
public IStudentRepository Students { get; private set; }
public ICourseRepository Courses { get; private set; }
public UnitOfWork(ApplicationDbContext context)
{
_context = context;
Students = new StudentRepository(_context);
Courses = new CourseRepository(_context);
}
public void Complete()
{
_context.SaveChanges();
}
}
` 我的问题是,当我有 100 个存储库时,启动存储库的最佳方法是什么?
谢谢
我从该视频的一条评论中找到了答案:https://www.youtube.com/watch?v=rtXpYpZdOzM
我可以像下面这样使用 getter,而不是在构造函数中初始化存储库:
public class UnitOfWork : IUnitOfWork
{
private readonly ApplicationDbContext _context;
private ICourseRepository _courses = null;
private IStudentRepository _students = null;
public UnitOfWork(ApplicationDbContext context)
{
_context = context;
}
public ICourseRepository Courses => _courses ?? (_courses = new CourseRepository(_context));
public IStudentRepository Students => _students ?? (_students = new StudentRepository(_context));