简体   繁体   English

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

[英]Entity Framework Return List from Stored Procedure

I'm trying to return a list of int from a stored procedure in Entity Framework.我正在尝试从实体框架中的存储过程返回一个 int 列表。

I created the stored procedure fine, and added it into Entity Framework.我很好地创建了存储过程,并将其添加到实体框架中。 I'm trying to bind it to a complex type of but when I open the function import.我试图将它绑定到一个复杂的类型,但是当我打开函数导入时。

It auto generates a complex type that only returns an int instead of a results set.它会自动生成一个只返回 int 而不是结果集的复杂类型。

Does anyone know how I can import an entity that returns a list as a result set?有谁知道我如何导入一个返回列表作为结果集的实体?

If your just trying to get a list from a stored procedure you don't need to map anything special.如果您只是想从存储过程中获取列表,则不需要映射任何特殊内容。

Just Call it Like this:就这样称呼它:

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

this should return a list of ints这应该返回一个整数列表

I created this sample stored procedure returning a list of int values:我创建了这个示例存储过程,返回一个 int 值列表:

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

I then added this stored procedure to my EF .edmx model and created this Function Import:然后我将此存储过程添加到我的 EF .edmx模型并创建了这个函数导入:

在此处输入图片说明

Querying the stored procedure shows me that it returns a result set consisting of int values - I therefore define the return value to be a collection of Scalar: Int32 in the function import dialog.查询存储过程显示它返回一个由int值组成的结果集 - 因此我将返回值定义为函数导入对话框中 Scalar: Int32 的集合

After that, I can call that stored procedure and get back the results like this:之后,我可以调用该存储过程并返回如下结果:

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

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

如果你想得到一个映射类的列表,试试这个

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM