繁体   English   中英

实体框架 4.1 中的存储过程动态 sql

[英]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 生成具有两个字段CustomerNameCustomerAddress的复杂类型。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM