所以我试图使用Entity Framework Core来调用存储过程并将一些行返回到对象中。
根据我正在处理的解决方案中的示例,我已将所有内容都安装到位,但是无法正常调用存储过程或将结果映射回来。
这是来自一段代码:
var list = this.context.DocumentList.FromSql<Document>("EXECUTE spSelDocsList @_iUserNumber", new { @_iUserNumber = UserId }).ToList();
返回错误:
“无法找到CLR类型'&lt;&gt; f__AnonymousType23'的关系类型的映射。”
答案 0 :(得分:1)
在更多地搜索此错误并尝试确定它返回的原因后,我无意中想到了这一点。
事实证明,传递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();