entity-framework-6 - 实体框架中的存储过程从多个表返回列
问题描述
我试图了解在 EntityFramework 6 中集成存储过程的最佳方法是什么。
我在 sql server 中创建了一个存储过程来进行复杂的查询,我只对该查询中的 3 列感兴趣。我可以让它“匹配”整个表并将其映射到域模型类,但感觉我带来的数据比必要的多。我应该带上域模型中的所有列吗?
另一个问题是,我应该在存储库中的哪里调用存储过程?在当前项目中,我有一个 ReportTemplateRepository,但所有方法都返回一个 ReportTemplate,因此添加存储过程调用将返回不同的内容。
解决方案
我认为您应该研究 CQRS,即Command Query Responsibility Segregation。它说您应该使用不同的模型来读取信息(查询)和写入信息(命令)。在我看来,当您使用此复杂查询执行的操作是读取数据时,您正在尝试使用适合命令(域模型/存储库)的东西。
所以我建议你创建一个名为 ReportProvider 的类,它负责从数据库中读取信息。在其中调用您的存储过程并将结果映射到具有您需要的确切 3 个属性的新类。
推荐阅读
- java - 为什么在评估调试对象时新的 FileInputStream 返回 null
- python - 根据第 0 个索引处的项目对 2D 嵌套列表进行排序
- java - 如何在 Java 中使用访问者模式模拟 Haskell 的模式匹配
- python - ValueError:error_score 必须是字符串“raise”或数值。(提示:如果使用“raise”,请确保拼写正确。)
- javascript - 如何在数组中找到对象?
- spring - Spring Boot + Apache CXF。仅发布带有注释的端点
- performance - 我们可以使用 Java 请求采样器进行大数据负载测试吗?
- node.js - 如何将 React App 客户端和 Node Server 部署到 cPanel
- celery - Celery:如何允许排队“重复”任务,但不允许处理“重复任务”?
- php - 从命令行跟踪 PHP 内存使用情况