类的结构如下。 MVC asp.net页面
控制器调用应用程序服务以获取数据并将数据发布到数据库。
工作单位使用的域实体类,用于从db插入,更新和读取数据。
我的问题是在哪里调用sql函数
Unitofwork.sqlquery<decimal>("select fn_testfunction").FirstOrDefault
我需要从应用程序服务中获得单独的域服务来执行所有这些sql调用吗? 要么 我可以直接从应用程序服务中调用sql函数并在其中公开函数名称吗? 我在Google上读到过,我们需要使用CQRS来调用proc和函数。我不知道该如何实现。请建议
答案 0 :(得分:1)
如果您遵循DDD,则首选结构为:
UI to=> Controllers(in case of MVC) to=> Services to=>Repository(for CURD operations on Aggregates and Entities).
这是因为由于服务是用于业务逻辑的,并且如果还添加SQL逻辑,那么它首先会破坏SRP(单一职责原则),其次,您将无法对数据访问层和业务层进行单元测试。孤立。
存储库模式是DDD的重要考虑因素,因此,最好同时使用存储库模式和工作单元模式来分别处理存储库中的所有SQL Logic和CURD操作。