C# 在实体框架数据库中调用存储过程-结果类中的第一列生成问题

C# 在实体框架数据库中调用存储过程-结果类中的第一列生成问题,c#,sql-server,entity-framework-6,ado.net,C#,Sql Server,Entity Framework 6,Ado.net,我的存储过程根据条件(如下所示)从2个select语句返回结果, 当我为这个存储过程生成edmx文件输入和结果类时,在结果类中我只得到ID、name和DateIn。 结果类中缺少DateOut列。 请帮助我使用entity framework database first方法在edmx中获取此列 CREATE PROCEDURE [dbo].[GetStocks] ( @id INTEGER ) AS BEGIN if @id=2 select ID,name,DateI

我的存储过程根据条件(如下所示)从2个select语句返回结果, 当我为这个存储过程生成edmx文件输入和结果类时,在结果类中我只得到ID、name和DateIn。 结果类中缺少DateOut列。 请帮助我使用entity framework database first方法在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列

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_结果类中缺少的DateOut列。

修改您的SP,如下所示:

namespace ConsoleApp6
{
    using System;

   public partial class GetStcoks_Result
   {
       public int ID { get; set; }
       public string name { get; set; }
       public string DateIn { get; set; }
    }
}
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,您将获得该列。

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

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

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

    END

您的名字不是姓氏:select ID,FirstName应该是select ID,LastName,FirstName而不修改SP我们是否可以使用实体框架检索FirstName列?否。SP返回ID和LastName;或者ID和FirstName。嗨,harsha,有没有一个选项可以在不修改存储过程的情况下通过entity framework获取此列(FirstName)?没有@user1928165,entity framework将获取我们在SP中提到的列。因此,在使用上述任何条件时,我们也需要指定这些列。否则,您可以在代码中编写LINQ查询来获得相同的结果,并编写视图模型类来返回结果,而不是使用此SP。