Stored procedures 如何在Entity Framework 4.3中将存储过程返回的列映射到POCO类

Stored procedures 如何在Entity Framework 4.3中将存储过程返回的列映射到POCO类,stored-procedures,ef-code-first,entity-framework-4.3,Stored Procedures,Ef Code First,Entity Framework 4.3,我将实体框架CodeFirst用于现有数据库。我有一个现有的存储过程,它从一个Customer\u Info表返回数据,该表有两列Customer\u ID、Customer\u Name。我为这个实体创建了一个名为Customer的类,它有两个属性CustomerID,CustomerName。现在我试图通过这个存储过程获取数据。我在OnModelCreating方法中定义了这样的映射 这就是我试图从存储的进程中获取数据并将数据加载到实体中的方式 public IList<Custome

我将实体框架CodeFirst用于现有数据库。我有一个现有的存储过程,它从一个Customer\u Info表返回数据,该表有两列Customer\u ID、Customer\u Name。我为这个实体创建了一个名为Customer的类,它有两个属性CustomerID,CustomerName。现在我试图通过这个存储过程获取数据。我在OnModelCreating方法中定义了这样的映射

这就是我试图从存储的进程中获取数据并将数据加载到实体中的方式

public IList<Customer> GetCustomers()
{
  return context.Database.SqlQuery<Customer>("exec GetCustomers @p0","NY")
                                                                       .ToList();
}
但它不起作用!说这样的话真是让我大错特错

数据读取器与指定的“客户”不兼容。A. “CustomerID”类型的成员没有相应的列 在具有相同名称的数据读取器中


我该如何解决这个问题?如果我直接从表中读取,则我的属性映射可以工作。

或者修改存储过程以使用

SELECT Customer_ID AS CustomerID, Customer_Info AS CustomerName ...
或者将Customer类中的属性修改为Customer\u ID和Customer\u信息。您首先使用的是代码,它不支持存储过程映射。它使用简单的内置映射,其中属性的名称通过其名称和列的名称匹配

若要映射存储过程结果集,必须首先放弃代码并使用EDMX

SELECT Customer_ID AS CustomerID, Customer_Info AS CustomerName ...