Возвратный список платформы Entity Framework из хранимой процедуры

Я пытаюсь вернуть список int из хранимой процедуры в Entity Framework.

Я создал хранимую процедуру и добавил ее в Entity Framework. Я пытаюсь привязать его к сложному типу, но когда я открываю импорт функции.

Он автоматически генерирует сложный тип, который возвращает только int вместо набора результатов.

Кто-нибудь знает, как я могу импортировать объект, который возвращает список в виде набора результатов?

Ответ 1

Я создал эту примерную хранимую процедуру, возвращая список значений int:

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

Затем я добавил эту хранимую процедуру в мою EF-модель .edmx и создал эту функцию Import:

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

Если вы просто пытаетесь получить список из хранимой процедуры, вам не нужно отображать что-либо особенное.

Просто назовите это вот так:

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

это должно возвращать список ints