实体框架从存储过程返回列表

13 c# stored-procedures entity-framework

我正在尝试从Entity Framework中的存储过程返回一个int列表.

我创建了存储过程很好,并将其添加到Entity Framework中.我正在尝试将它绑定到复杂类型,但是当我打开函数import时.

它会自动生成一个只返回int而不是结果集的复杂类型.

有谁知道如何导入一个返回列表作为结果集的实体?

joh*_*y 5 18

如果您只是想从存储过程中获取列表,则无需映射任何特殊内容.

就这样打电话:

var results = dbContext.Database.SqlQuery<int>("SP_YourSP").ToList();
Run Code Online (Sandbox Code Playgroud)

这应该返回一个int列表


mar*_*c_s 14

我创建了这个示例存储过程,返回一个int值列表:

CREATE PROCEDURE dbo.GetListOfInt
AS BEGIN
    SELECT *
    FROM 
    (VALUES (42), (4711), (8088), (80286), (80486), (655235)) AS VT(VC)
END
Run Code Online (Sandbox Code Playgroud)

然后我将此存储过程添加到我的EF .edmx模型并创建了此函数导入:

在此输入图像描述

查询存储过程向我显示它返回一个由int值组成的结果集- 因此我在函数导入对话框中将返回值定义为Scalar:Int32的集合.

之后,我可以调用该存储过程并返回如下结果:

using (testEntities ctx = new testEntities())
{
    ObjectResult<int?> result = ctx.GetListOfInt();

    foreach (int intValue in result.AsEnumerable())
    {
        Console.WriteLine("INT value returned: {0}", intValue);
    }
}
Run Code Online (Sandbox Code Playgroud)