用于数据库交互的通用存储库或存储过程?

Generic repository OR stored procedures for database interaction?

由于通用存储库可用于插入、更新、删除等,但它仅限于简单的 Crud 操作,如果我想使用我的通用存储库进行一些更复杂的插入和搜索,例如连接表和检索通过存储过程。并使用存储过程将数据插入多个表,那么我将如何从通用存储库处理它?

1. 我可以从我的通用存储库调用存储过程吗?

2.使用通用存储库+存储过程是个好主意吗?

3. 是否兼容基于标准的复杂搜索?

你的问题应该更具体才能给你一个正确的答案,但这是我的两分钱:

  1. 是的,可以从您的存储库调用存储过程。如果您使用 Entity Framework,则可以将存储过程映射到 CLR 对象,您可以从您的存储库中调用该对象。根据您使用的框架(或不使用),您需要找出正确的语法来执行此操作。

  2. 我个人不会使用这种方法,因为我宁愿将业务逻辑放在业务层中。然而,在某些情况下它肯定是有用的,例如当性能非常重要或您希望完全控制您的查询或其他一些复杂操作时。

  3. 请记住,您可以使用 LINQ 构建复杂的查询(连接、排序、过滤、聚合、选择...)。有些部分甚至可以自动化,例如使用 PredicateBuilder 的 WHERE 子句,使您能够根据用户输入、搜索条件动态创建 and/or 查询,..

一般来说,是的,这是可能的,但这完全取决于您工作的环境。