我在基于参数执行不同的结果集时遇到问题。 我有一个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
的错误。但即使我通过第一次查询调用,也很少发生此错误。
如何实现此功能?
答案 0 :(得分:1)
从SP返回的表中的列名将根据“上下文”而有所不同,因此EF只能将它们映射到其中一个上下文中的实体属性。从同一存储过程返回不同的列名称是不好的做法,因此您需要做的是使它们适用于所有上下文/场景。
您可以使用AS关键字来执行此操作:
SELECT CustomerName AS Name, CustomerAddress AS Address FROM Customer
和
SELECT EmployeeName AS Name, EmployeeAddress AS Address FROM Employee