【问题标题】:Entity Framework Core - FromSql error:实体框架核心 - FromSql 错误:
【发布时间】:2017-11-03 15:47:40
【问题描述】:

所以我尝试使用 Entity Framework Core 来调用存储过程并将一些行返回到对象中。

按照我正在使用的解决方案中的示例,我已准备好一切,但无法正常调用存储过程或将结果映射回来。

这是一段代码:

var list = this.context.DocumentList.FromSql<Document>("EXECUTE spSelDocsList @_iUserNumber", new { @_iUserNumber = UserId }).ToList();

返回错误:

“找不到与 CLR 类型 'f__AnonymousType23' 的关系类型的映射。”

【问题讨论】:

    标签: entity-framework entity-framework-core


    【解决方案1】:

    在更多地搜索此错误并试图确定它返回的原因后,我无意中发现了这一点。

    从此堆栈溢出帖子: No mapping exists from object type System.Collections.Generic.List when executing stored proc with parameters in EF 4.3

    事实证明,为 SqlParameter 传递匿名对象将导致无法为 CLR 类型“f__AnonymousType23”找到到关系类型的映射。

    对此代码的修复很简单,首先将参数放入实际的 SqlParameter 对象中。但是通过将 SqlParameter 对象放入 List 并返回 ToArray() IS 被 EF FromSql 方法接受是行不通的。

     List<SqlParameter> sqlParameters = new List<SqlParameter>();
     sqlParameters.Add(new SqlParameter("@_iUserNumber", userId));
    
     var list = context.DocumentList.FromSql<Document>("EXECUTE spSelDocsList @_iUserNumber", sqlParameters.ToArray()).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      相关资源
      最近更新 更多