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

相关问题