首页 > 解决方案 > 实体框架中的存储过程从多个表返回列

问题描述

我试图了解在 EntityFramework 6 中集成存储过程的最佳方法是什么。

我在 sql server 中创建了一个存储过程来进行复杂的查询,我只对该查询中的 3 列感兴趣。我可以让它“匹配”整个表并将其映射到域模型类,但感觉我带来的数据比必要的多。我应该带上域模型中的所有列吗?

另一个问题是,我应该在存储库中的哪里调用存储过程?在当前项目中,我有一个 ReportTemplateRepository,但所有方法都返回一个 ReportTemplate,因此添加存储过程调用将返回不同的内容。

标签: entity-framework-6domain-model

解决方案


我认为您应该研究 CQRS,即Command Query Responsibility Segregation。它说您应该使用不同的模型来读取信息(查询)和写入信息(命令)。在我看来,当您使用此复杂查询执行的操作是读取数据时,您正在尝试使用适合命令(域模型/存储库)的东西。

所以我建议你创建一个名为 ReportProvider 的类,它负责从数据库中读取信息。在其中调用您的存储过程并将结果映射到具有您需要的确切 3 个属性的新类。


推荐阅读