今天我想为数据库连接实现存储库模式+工作单元模式。我的代码是否正确?因为这是我第一个实现数据库连接的工作单元。
第一个存储库:
public class NotesRepository : INotesRepository
{
private DatabaseContext context;
public NotesRepository(DatabaseContext context)
{
this.context = context;
}
public IQueryable<Notes> GetAllNotes()
{
return (from x in context.Notes
select x);
}
}
第二个仓库:
public class CommentsRepository : ICommentsRepository
{
private DatabaseContext context;
public CommentsRepository(DatabaseContext context)
{
this.context = context;
}
public IQueryable<Comments> GetAllComments()
{
return (from x in context.Comments
select x);
}
}
数据库连接的工作单元类:
public class UnitOfWork
{
private DatabaseContext context = new DatabaseContext();
private INotesRepository notesRepository;
private ICommentsRepository commentsRepository;
public INotesRepository NotesRepository
{
get
{
if (this.notesRepository == null)
{
this.notesRepository = new NotesRepository(context);
}
return notesRepository;
}
}
public ICommentsRepository CommentsRepository
{
get
{
if (this.commentsRepository == null)
{
this.commentsRepository = new CommentsRepository(context);
}
return commentsRepository;
}
}
}
和控制器,我可以在其中使用多个具有单个数据库连接的存储库:
public class HomeController : Controller
{
private UnitOfWork unitOfWork = new UnitOfWork();
public ViewResult Index()
{
var a = unitOfWork.NotesRepository.GetAllNotes();
var b = unitOfWork.CommentsRepository.GetAllComments();
return View();
}
}