我正在尝试从Entity Framework中的存储过程返回一个int列表。
我创建了存储过程,并将其添加到Entity Framework中。我正在尝试将它绑定到复杂类型,但是当我打开函数import时。
它会自动生成一个只返回int而不是结果集的复杂类型。
有谁知道如何导入一个将列表作为结果集返回的实体?
答案 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
模型并创建了此函数导入:
查询存储过程向我显示它返回一个由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();