2015-07-10 3 views
0

Следующий код содержит созданную процедуру.Как вернуть список хранимой процедуры в SQL Server и WebAPI2

USE [SAMPLE_DB] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [dbo].[GetAllGroups] 
AS 
BEGIN 
    SELECT [dbo].[QR_Groups].[Id], [dbo].[QR_Groups].[name], [dbo].[QR_Groups].[code] 
    FROM [dbo].[QR_Groups] 
END 

Я не могу использовать хранимую процедуру, потому что я получаю сообщение об ошибке:

Не удается неявно преобразовать тип 'INT' в 'System.Linq.IQueryable'

Я не знаю, как вернуть данные из таблицы в WebAPI.

Вот Controller код:

public IQueryable<QR_Group> GetAllGroups() 
{ 
    return db.GetAllGroups(); 
} 

EDIT:

Новое сообщение об ошибке:

Не может неявно преобразовать тип «System.Data.Entity.Core.Objects .ObjectResult 'to' System.Linq.IQueryable '. Явное преобразование существует (вы пропали без вести броска?)

+0

Code-первый или EDMX? Как ваш сохраненный proc объявлен в вашем контексте EF? –

+0

@DavidTansey Я объявил хранимую процедуру в студию управления сервером sql – yuro

ответ

0

Я никогда не использовал хранимые процедуры в EF, но я думаю, что вы хотите это

public IList<QR_Group> GetAllGroups() { 
    return db.GetAllGroups().ToList(); 
} 
+0

Нет, это не работает, потому что она сообщает, что хранимая процедура возвращает INT, но мне нужен массив с объектами. У меня есть 3 столбца (Id = int, name = string, code = string) – yuro

+0

Список представляет собой форму массива, но вам нужно выяснить, что возвращает GetAllGroups. Если вы правильно настроили EF, должна быть модель, которую EF использует, когда она вызывает хранимую процедуру. Эта модель - это то, что вам нужно, и что нужно вернуть через ваш WebAPI. –

+0

Я создал хранимую процедуру в студию управления сервером sql. после этого я обновил модель данных сущности с помощью фреймворка сущности. И, наконец, определил в контроллере, как вы можете видеть выше. И теперь у меня есть это сообщение об ошибке: '(Невозможно неявно преобразовать тип 'System.Data.Entity.Core.Objects.ObjectResult ' в 'System.Linq.IQueryable '. Явное преобразование существует (вы пропускаете листинг?)) – yuro

Смежные вопросы