0

根据参数执行不同的结果集时出现问题。我有一个 sp,它根据参数执行两个查询,两个查询都执行一次,例如:

CREATE PROCEDURE [dbo].[ShowMessages]        
    @context  int,
AS
      BEGIN
      --CALENDAR ADMIN QUEUE
      if @context = 1 
            BEGIN
             Select CustomerName, CustomerAddress from Customer
            END
      ELSE if @queueContext = 2  OR @queueContext = 6
            BEGIN
             Select EmployeeName, EmployeeAddress from Employee
            END
END

=== 我用我的复杂类型映射它:EF 生成具有两个字段的复杂类型CustomerName, CustomerAddress. EF 抛出IDataReader. 但即使我通过第一次查询调用,这个错误也很少发生。

我怎样才能实现这个功能?

4

1 回答 1

1

从您的 SP 返回的表中的列名将根据“上下文”而有所不同,因此 EF 只能将它们映射到其中一种上下文中的实体属性。从同一个存储过程返回不同的列名是不好的做法,因此您需要做的是使它们在所有上下文/场景中保持一致。

您可以使用 AS 关键字来执行此操作,如下所示:

SELECT CustomerName AS Name, CustomerAddress AS Address FROM Customer

SELECT EmployeeName AS Name, EmployeeAddress AS Address FROM Employee
于 2012-04-09T08:56:30.340 回答