1

我将编写一个存储过程,它将根据查询拉回 X 条记录。该 SP 在进行搜索时可能需要锁定记录。我也在使用我知道不能使用悲观锁定的 EF。

我没有在查询本身中包含过滤逻辑,而是考虑使用规范模式,以便业务逻辑决定查询。如果我使用此模式并将规范传递到我的存储库中,该存储库又调用 SP,SP 如何知道如何处理规范?

规范可以由跨越多个表和在不同列上排序的标准组成。

在这种情况下使用规范模式是否有意义,或者我应该只使用其中定义的查询和过滤来创建 SP?

4

2 回答 2

2

规范模式用于在您的应用程序中定义和执行查询 - Linq 是一种规范。存储过程用于直接在数据库服务器中定义和执行查询。这两个大多是相反的方法。

可以在存储过程中创建动态 SQL,但这会将您的逻辑移动到与 DDD 无关的数据库中。此外,允许这样的解决方案用于需要连接其他表的任意过滤器将非常复杂。

于 2012-05-01T10:43:11.750 回答
0

当前无法将规范从 C# lambda 表达式转换为可以传递给存储过程以查询数据库的结构。仅当您打算充分利用 ORM(而不是存储过程)时,规范模式才有用。

于 2019-10-25T15:31:01.557 回答