2015-07-10 55 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 

,因爲我收到錯誤消息我不能使用存儲過程:

無法隱式轉換類型「詮釋」到「System.Linq.IQueryable」

我不知道如何從WebAPI表中返回數據。

這裏是Controller代碼:

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

編輯:

新的錯誤消息:

無法隱式轉換類型「System.Data.Entity.Core.Objects .ObjectResult'改爲'System.Linq.IQueryable'。一個顯式轉換存在(是否缺少強制轉換?)

+0

代碼優先或EDMX?您的EF上下文中聲明的存儲過程如何? –

+0

@DavidTansey我在sql server management studio中聲明瞭存儲過程 – 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 server management studio中創建了存儲過程。之後我用實體框架更新了我的實體數據模型。最後在控制器中定義瞭如何看到上面的內容。現在我有這個錯誤信息:'(不能隱式地將類型'System.Data.Entity.Core.Objects.ObjectResult '轉換爲'System.Linq.IQueryable '。存在明確的轉換(您是否缺少演員?))' – yuro