【问题标题】:EF 6 DataBase First Stored ProcedureEF 6 数据库优先存储过程
【发布时间】:2016-10-28 22:00:07
【问题描述】:

当使用 EF6 Database First 并尝试执行存储过程时,自动生成的上下文会添加所需的方法,但将返回类型设置为 ObjectResult。例如下面的定义:

public virtual ObjectResult<USP_GetItemDetails_Result> USP_GetItemDetails(int? itemNbr, int? siteNbr)

返回类型为:

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<USP_GetItemDetails_Result>("USP_GetItemDetails", itemNbr, siteNbr);

有没有办法将这个结果具体化为具体的类,而不必将结果作为 ObjectResult 发送?我堆栈中的下一层不知道实体框架。

【问题讨论】:

  • 另外,如果存储过程的返回类型是与任何数据库实体都不匹配的复杂类型(它是来自链接服务器的一些本地信息和数据的合并),则存储过程的返回类型也是如此。
  • 为什么不自己将结果映射到一个新类中?
  • 我可以这样做,但是稍后当我通过 Web API 将结果作为 dto 返回时,我会再次映射。
  • 你可以使用 Automapper automapper.org

标签: c# entity-framework


【解决方案1】:

原来 ObjectResult 是一个 IEnumerable。一个简单的 toList 意味着我可以将 IEnumerable 返回到下一层。

【讨论】:

    猜你喜欢
    • 2013-12-29
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多