gpt4 book ai didi

asp.net-mvc - MVC 应用程序中数据库的具有 UnitOfWork 模式的存储库

转载 作者:行者123 更新时间:2023-12-04 20:00:43 25 4
gpt4 key购买 nike

今天我想为数据库连接实现存储库模式+工作单元模式。我的代码是否正确?因为这是我第一个实现数据库连接的工作单元。

第一个存储库:

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;
}
}
}

还有 Controller ,我可以在其中使用多个存储库和单个数据库连接:

public class HomeController : Controller
{
private UnitOfWork unitOfWork = new UnitOfWork();

public ViewResult Index()
{
var a = unitOfWork.NotesRepository.GetAllNotes();
var b = unitOfWork.CommentsRepository.GetAllComments();

return View();
}
}

最佳答案

你的实现非常正确:)

但我建议您使用 IUnitOfWork 接口(interface)并在构造函数中传递 DatabaseContext 实例。

另一件事是在 UnitOfWork 中创建一个 SaveChanges 方法以将数据提交到数据库。

关于asp.net-mvc - MVC 应用程序中数据库的具有 UnitOfWork 模式的存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13785743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com