服务存储库模式,如何使用许多相关实体保存多个对象

时间:2018-03-22 09:21:31

标签: c# database asp.net-core-webapi

关系:Parent =>儿童=>孙子

为这三个实体提供单独的服务和回购。客户端发送包含要创建并保存在数据库中的子项和孙项的父项。

"正确的"接近这里?单独处理不同实体的创建意味着我必须为每个父级打开3个数据库连接,而在同一个服务/ repo中处理所有这些连接则违反了体系结构。

1 个答案:

答案 0 :(得分:2)

这就是工作单元模式的概念所在。你有你的存储库,然后你有一个工作单元,它具有每个存储库的属性。你注入了你的工作单元,你可以在交易中处理你需要的任何东西。

这实际上与数据库访问相同,实际上,像Entity Framework这样的ORM会为您完成。例如,使用实体框架,DbContext是您的工作单元,其上的每个DbSet都是一个存储库。您没有提到数据库访问方法,但如果您使用的是ORM,则意味着您不应该实现工作模式的存储库/单元。它是一个无用的附加层,只是增加了额外的维护和测试问题而没有任何好处。如果您使用ADO.NET之类的东西进行直接SQL,那么使用存储库模式很好(甚至推荐),但您也应该将它与工作单元格结合起来。您应该启动一个事务,利用所有存储库,然后最终关闭事务。需要工作单位来规范这一切。

相关问题