首先调用 Entity framework 数据库中的存储过程 - 结果 class 中的列生成问题

calling stored procedure in Entity framework database first - Column generation issue in result class

我的存储过程根据条件(如下所示)从 2 select 语句返回结果, 当我为此存储过程生成 edmx 文件输入和结果 class 时,结果 class 我只得到 ID、名称和 DateIn。 结果 class 中缺少 DateOut 列。 请帮助我使用 entity framework 数据库优先方法在 edmx 中获取此列。

CREATE PROCEDURE [dbo].[GetStocks]  
(  
@id INTEGER
)  
AS    
BEGIN  
if @id=2
select ID,name,DateIn from dbo.StcokIn
else 
select ID,name,DateOut from dbo.StockOut;
END

我生成了 edmx 文件,但我没有在结果中得到 DateOut 列 class。

namespace ConsoleApp6
{
    using System;

   public partial class GetStcoks_Result
   {
       public int ID { get; set; }
       public string name { get; set; }
       public string DateIn { get; set; }
    }
}

我想在 GetStcoks_Result class 中缺少 DateOut 列。

像下面这样修改你是SP:

CREATE PROCEDURE [dbo].[GetPersons]  
(  
@id INTEGER
)  
AS    
BEGIN  
if @id=2
select ID,FirstName='', LastName from dbo.Person
else 
select ID,FirstName, LastName='' from dbo.Person;
END

现在再次更新您的 EDMX,您将获得该列。

为什么您选择了一个基于输入参数的 属性 并且仍然想用这两个属性为您的对象建模?为什么不制定一个标准程序来 return 这两个属性,然后在您的应用程序中使用所需的 属性 如果不是这两个属性?

  CREATE PROCEDURE [dbo].[GetPersons]  
 (  
   @id INTEGER
   )  
   AS    
   BEGIN  

   select ID,FirstName, LastName from dbo.Person where id = @id

    END