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

时间:2015-03-12 14:48:09

标签: c# entity-framework stored-procedures

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

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

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

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

3 个答案:

答案 0 :(得分:16)

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

就这样称呼:

var results = dbContext.Database.SqlQuery<int>("SP_YourSP").ToList();

这应该返回一个int列表

答案 1 :(得分:13)

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

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

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

enter image description here

查询存储过程向我显示它返回一个由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);
    }
}

答案 2 :(得分:0)

如果您想获取包含映射类的列表,请尝试

var results = dbContext.Database.SqlQuery<youclass>("SP_YourSP").ToList();