1

出于性能原因,我需要将一些复杂的业务逻辑放入数据库中,并且我正在使用存储库模式。问题是——我应该从存储库中调用这个业务逻辑吗?我知道存储库不应该知道 BL,因为它只是 BL 和数据存储之间的中介(它应该只包含 CRUD 和查询方法)。你怎么看?

4

1 回答 1

2

Repository 的职责是提供类似内存中的实体集合以供查询或添加。我不知道您在谈论什么样的业务逻辑,但是如果您将其引入存储库中,它很可能会破坏单一责任原则。这将意味着给存储库代码提供许多更改的理由,减少内聚力,从而提供许多中断的理由。

如果您的数据库中有带有业务逻辑的存储过程,我建议您在调用代码和数据库之间引入某种接口,以保持事情解耦。它不会是存储库,因为它的目的是触发一些业务逻辑而不是持久化数据,但实现可以采用基础设施服务的形式。

这将允许您使用模拟数据库单独测试您的代码,并切换到数据库访问接口的另一个实现以指向另一个 DBMS,或者如果您决定在某个时候放弃存储过程,甚至只是指向对象。

于 2012-04-13T12:37:17.953 回答