[英]stored procedure dynamic sql in entity framework 4.1
我在根据参数执行不同的结果集时遇到问题。 我有一个 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
错误。 但是即使我通过第一次查询调用,这个错误也很少发生。
我怎样才能实现这个功能?
从您的 SP 返回的表中的列名将根据“上下文”而有所不同,因此 EF 只能将它们 map 到这些上下文之一中的实体属性。 从同一个存储过程返回不同的列名是不好的做法,因此您需要做的是使它们在所有上下文/场景中保持一致。
您可以像这样使用 AS 关键字来执行此操作:
SELECT CustomerName AS Name, CustomerAddress AS Address FROM Customer
和
SELECT EmployeeName AS Name, EmployeeAddress AS Address FROM Employee
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.