【问题标题】:Stored Procedures in entity framework returning columns from multiple tables实体框架中的存储过程从多个表返回列
【发布时间】:2019-09-10 13:07:31
【问题描述】:
我正在尝试了解在 EntityFramework 6 中集成存储过程的最佳方式。
我在 sql server 中创建了一个存储过程来进行复杂的查询,我只对该查询中的 3 列感兴趣。我可以让它“匹配”整个表并将其映射到域模型类,但我觉得我带来了不必要的数据。我应该带上域模型中的所有列吗?
另一个问题是,我应该在存储库中的哪里调用存储过程?在当前项目中,我有一个 ReportTemplateRepository,但所有方法都返回一个 ReportTemplate,因此添加存储过程调用将返回不同的内容。
【问题讨论】:
标签:
entity-framework-6
domain-model
【解决方案1】:
我认为你应该研究 CQRS,即 Command Query Responsibility Segregation。它说您应该使用不同的模型来读取信息(查询)和写入信息(命令)。在我看来,您正在尝试使用事物
当您对这个复杂查询执行的操作是读取数据时,适合命令(域模型/存储库)的东西。
所以我建议你创建一个名为 ReportProvider 的类,它负责从数据库中读取信息。在其中调用您的存储过程并将结果映射到具有您需要的确切 3 个属性的新类。