entity-framework - 在 EF 4.3 中使用参数执行存储过程时,对象类型 System.Collections.Generic.List 不存在映射

标签 entity-framework entity-framework-4.1 ef-code-first

最近我一直在研究存储过程,遇到了 1 个奇怪的问题。

首先,我能够通过以下方式从数据库成功调用存储过程:

IList<XXXViewModel> XXXList = _context.Database.SqlQuery("spXXX").ToList();



但是当我需要传递参数时它失败了:
var parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("param1", param1Value));
parameters.Add(new SqlParameter("param2", param2Value));
IList<XXXViewModel> XXXList =
_context.Database.SqlQuery<XXXViewModel>("spXXX @param1, @param2", parameters).ToList();

我得到了 ff,错误:

No mapping exists from object type System.Collections.Generic.List`1[[System.Data.SqlClient.SqlParameter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] to a known managed provider native type.



请注意,我也尝试过:
_context.Database.ExecuteSqlCommand<EXEC XXXViewModel>("spXXX @param1, @param2", parameters).ToList();

但得到了相同的结果:-(。

我也尝试通过指定每个参数来调用:
IList<XXXResult> query = Context.Database.SqlQuery<XXXResult>("SP @paramA, @paramB, @paramC", new SqlParameter("paramA", "A"), new SqlParameter("paramB", "B"), new SqlParameter("paramC", "C")).ToList();

任何人有任何想法?

最佳答案

您需要将每个参数传递给方法(即您不能传递列表)

IList<XXXViewModel> XXXList =
     _context.Database.SqlQuery<XXXViewModel>("spXXX @param1, @param2", 
     new SqlParameter("param1", param1Value), 
     new SqlParameter("param2", param2Value)).ToList();

关于entity-framework - 在 EF 4.3 中使用参数执行存储过程时,对象类型 System.Collections.Generic.List 不存在映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149919/

相关文章:

c# - MVC3 + Entity Framework ,更新实体中的选择性字段

c# - Entity Framework - 如何检查表是否存在?

mysql - Entity Framework 和逆向工程 Code First 和 MySQL : error access denied

c# - 无法从 Entity Framework 中的模型代码生成数据库

asp.net - 如何从 Entity Framework 中的上下文中取消附加实体?

entity-framework - 将 Entity Framework 4.1 Code First 应用程序移至生产需要哪些更改?

c# - 如何在 EF4.3 代码优先中映射到复杂类型或从复杂类型映射?

c# - 使用 *sql* 子查询的 Entity Framework 查询

c# - 尝试创建初始迁移 EF Core 3 asp.net Core 时出错

entity-framework - MVC 4 代码优先数据库初始化程序不起作用