0

类的结构如下。MVC asp.net 页面

控制器调用应用程序服务来获取数据并将数据发布到数据库。

工作单元使用域实体类从数据库插入、更新和读取数据。

我的问题是我在哪里调用 sql 函数

Unitofwork.sqlquery<decimal>("select fn_testfunction").FirstOrDefault

从应用程序服务中,我需要有单独的域服务来执行所有这些 sql 调用吗?或者我可以直接从应用程序服务调用 sql 函数并在那里公开函数名吗?我在 Google 时读到我们需要使用 CQRS 来调用 procs 和函数。我不明白如何实现这一目标。请建议

4

1 回答 1

1

如果您遵循 DDD,则首选结构是:

    UI to=> Controllers(in case of MVC) to=> Services to=>Repository(for CURD operations on Aggregates and Entities).

这是因为服务是为业务逻辑服务的,如果你也添加你的 SQL 逻辑,首先,它会破坏 SRP(单一责任原则)其次,你将无法单独对数据访问层和业务层进行单元测试。
存储库模式是 DDD 的一个重要考虑因素,因此最好分别处理存储库中的所有 SQL 逻辑和 CURD 操作,同时使用存储库模式和工作单元模式。

于 2019-09-07T15:40:32.863 回答