2017-02-23 19 views
0

我得到了一个简单的存储过程,它从较大的表中返回少量列的几列。实体框架从存储过程中获取选择命令对象

事情是这样的:

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;} 
} 

将实体连接到实体框架的过程返回值的正确/最佳方法是什么?

P.S.我正在使用SQL Server,EF和C#。

回答

0

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

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<info>("spTemp", Type); 
0

为纽带Stored-Procedure可以导入在VS 存储过程和使用它们生成的数据。

0

您需要将存储过程导入到模型中。它将创建一个名为{sp name} _Result的新复合类型。

您不需要查询的复杂类型,所以通过在此对话框中右键单击项目资源管理器中的函数导入来更改返回类型以返回适当的实体,从而消除此问题。

完成后您将看到类中的函数。

你可以通过这样的事情然后运行程序:

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

    foreach (gType cs in gTypes) 
     Console.WriteLine(cs.gType); 
} 

我从这里的教程适应这一点,请让我知道,如果你得到它的工作。我试图在实体框架中提高技能。

http://www.entityframeworktutorial.net/stored-procedure-in-entity-framework.aspx