实体框架核心 - FromSql错误:

时间:2017-11-03 15:47:40

标签: entity-framework entity-framework-core

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

根据我正在处理的解决方案中的示例,我已将所有内容都安装到位,但是无法正常调用存储过程或将结果映射回来。

这是来自一段代码:

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

返回错误:

“无法找到CLR类型'&lt;&gt; f__AnonymousType23'的关系类型的映射。”

1 个答案:

答案 0 :(得分:1)

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

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

事实证明,传递SqlParameter的匿名对象将导致可以找到CLR类型'&lt;&gt; f__AnonymousType23'的关系类型的无映射。

对代码的修复很简单,首先将参数放在实际的SqlParameter对象中。但是传递SqlParameter对象不起作用,将它放在List中并返回EF FromSql方法接受的ToArray()IS。

 List<SqlParameter> sqlParameters = new List<SqlParameter>();
 sqlParameters.Add(new SqlParameter("@_iUserNumber", userId));

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