Din*_*UUp 2 entity-framework entity-framework-core
所以我试图使用 Entity Framework Core 来调用存储过程并将一些行返回到对象中。
遵循我正在使用的解决方案中的示例,我已准备好所有内容,但无法正常调用存储过程或将结果映射回。
这是来自一段代码:
var list = this.context.DocumentList.FromSql<Document>("EXECUTE spSelDocsList @_iUserNumber", new { @_iUserNumber = UserId }).ToList();
返回错误:
“无法为 CLR 类型 '<>f__AnonymousType23' 找到到关系类型的映射。”
在更多地搜索此错误并尝试确定返回它的原因后,我无意中发现了这一点。
来自此堆栈溢出帖子: 在 EF 4.3 中使用参数执行存储过程时,对象类型 System.Collections.Generic.List 不存在映射
事实证明,为 SqlParameter 传递匿名对象将导致无法为 CLR 类型“<>f__AnonymousType23”找到到关系类型的映射。
对此代码的修复很简单,首先将参数放入实际的 SqlParameter 对象中。但是通过将 SqlParameter 对象放入 List 并返回 ToArray() 被 EF FromSql 方法接受,传递该 SqlParameter 对象不起作用。
List<SqlParameter> sqlParameters = new List<SqlParameter>();
sqlParameters.Add(new SqlParameter("@_iUserNumber", userId));
var list = context.DocumentList.FromSql<Document>("EXECUTE spSelDocsList @_iUserNumber", sqlParameters.ToArray()).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3925 次 |
| 最近记录: |