【问题标题】:How to Call SQL function from controller如何从控制器调用 SQL 函数
【发布时间】:2019-03-15 09:35:20
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您是否遇到任何具体错误或尚未尝试过?
  • 我调用SQL函数没有任何错误。我想知道如何构造类以及从控制器调用这个函数时,在哪里封装这个工作单元 SQL 函数调用
  • 它与 CQRS 或 DDD 无关。这些调用应该封装在存储库类下(检查存储库模式),以便您可以切换持久性技术(例如您的数据库)而不影响应用程序的其余部分。

标签: asp.net-mvc cqrs ddd-repositories ddd-service


【解决方案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 操作,同时使用存储库模式和工作单元模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-22
    • 2014-12-11
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多