gpt4 book ai didi

c# - 在服务类或单独的关注点中继承存储库?

转载 作者:行者123 更新时间:2023-12-03 21:39:37 25 4
gpt4 key购买 nike

考虑这个依赖注入(inject)设置。

  public BookingController(IBookingService bookingService, 
IBookingRepository bookingRepository)
{

}

我的 bookingRepository 是一个驻留在数据访问层的实现,而 bookingService 是一个实现。驻留在业务层。

我使用 BookingRepository 来保存预订,我希望预订冲突逻辑在业务层,因此我有一个预订服务对象。

现在我有点纠结是 IBookingService 应该只实现 IBookingRepository 然后继承 BookingRepository 类,还是它们应该保持独立。

分离的优点:

  • 在物理上分离保存的概念和业务逻辑
  • 能够切换正在使用的数据层类型
  • 能够通过服务插入对 DAL 的调用

分离的缺点:

  • 我必须在任何需要的地方同时注入(inject)服务和存储库。
  • 对服务的多次调用,将直接重定向到存储库。

你对此有何看法?

最佳答案

这很简单:他们应该分开,他们有非常不同的关注点。事实上,BookingService 应该依赖于 IBookingRepository

该服务管理预订的用例。您的 Controller 只是向服务发送一些输入数据,服务对其进行处理(验证业务规则、加载/更新实体等),然后将新的/更新的实体发送到存储库。

预订服务关心业务规则,存储库关心持久实体。您的存储库不应包含任何业务规则,而应仅包含与持久性相关的详细信息。至少在更新模型时。对于查询,直接使用查询处理程序或查询存储库/服务(随意命名)会更容易。

关于c# - 在服务类或单独的关注点中继承存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974423/

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