C# 实体框架从存储过程中获取select命令对象

C# 实体框架从存储过程中获取select命令对象,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我得到了一个简单的存储过程,它从一个大得多的表中返回几列,其中包含一个小的项 大概是这样的: CREATE PROCEDURE spTemp @Type nvarchar(25) AS SELECT DISTINCT gType, gYear, gModel FROM MyTableOnDB WHERE gType = @Type GO 我还得到了一个对象来填充数据。比如: public class info { public string Type {get;

我得到了一个简单的存储过程,它从一个大得多的表中返回几列,其中包含一个小的项

大概是这样的:

CREATE PROCEDURE spTemp @Type nvarchar(25)
AS
    SELECT DISTINCT gType, gYear, gModel
    FROM MyTableOnDB
    WHERE gType = @Type
GO
我还得到了一个对象来填充数据。比如:

public class info
{
   public string Type {get; set;}
   public string Model {get; set;}
   public int year {get; set;}
}
在考虑实体框架的情况下,将对象连接到过程返回值的正确/最佳方法是什么


另外,我使用的是SQL Server、EF、C。

当您使用EF时,您的存储实体将在您的解决方案中创建。您可以调用存储过程并转换为实体类型。这是一个示例方法

 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<info>("spTemp", Type);
作为链接,您可以在VS中导入存储过程
并使用它们生成数据。

您需要将存储过程导入模型。它将创建一个名为{sp name}\u Result的新复杂类型

您的查询不需要复杂类型,因此在该对话框中右键单击项目资源管理器中的函数“导入”来删除该类型。更改返回类型以返回相应的实体

完成后,您将在类中看到函数

然后,您可以通过以下方式运行该过程:

using (var context = new tempDBEntities())
{
    var type = context.spTemp(1);

    foreach (gType cs in gTypes)
        Console.WriteLine(cs.gType);
}
我已经从这里的教程改编了这个,如果你能让它工作,请告诉我。我试图在实体框架中提高技能