如何使用与Entity Framework一起使用表的存储过程

时间:2013-09-30 19:53:34

标签: c# sql linq entity-framework

我似乎无法将其读入Entity Framework并使用LINQ,因为我收到此错误:

  

无法检测到以下存储过程的返回类型。在“属性”窗口中为每个存储过程设置返回类型。

我尝试使用谷歌搜索,但解决方案似乎不在我的脑海里..我可以解决这个问题吗?绝望= [

我能想到做这项工作的唯一方法是创建一个新表..但我只能使用存储过程

ALTER PROCEDURE [dbo].[GetGame_FantasyHome]
    -- Add the parameters for the stored procedure here
    @GameDate varchar(8),
    @TricodeHome varchar(3)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    CREATE TABLE #FantasyHome(
        GameKey int,
        PlayerName varchar(50),
        Tricode varchar(3),
        StatString varchar(50),
        Position varchar(20),
        FantasyScore int
    )   

    DECLARE @gameKey int
    SET @gameKey = (SELECT GameKey FROM Games WHERE GameDate=@GameDate
        AND TricodeHome=@TricodeHome)

    INSERT #FantasyHome
    SELECT TOP 1 p.GameKey, p.PlayerName, p.Tricode, p.StatString, p.Position,
        (p.Yards/25 + p.Touchdowns * 6 - p.Interceptions * 2) AS FantasyScore
    FROM GamePassers AS p 
    WHERE p.GameKey=@gameKey AND p.Tricode=@TricodeHome
    ORDER BY FantasyScore DESC, p.Yards DESC

    SELECT *
    FROM #FantasyHome
    ORDER BY FantasyScore DESC

    DROP TABLE #FantasyHome
END

1 个答案:

答案 0 :(得分:2)

  

·让这些类型的存储过程工作的一种方法是   手动编辑DBML或为过程编写自己的方法签名   在部分类中处理从存储的多个记录集返回   LINQ的程序请看这里的链接。

     

·第二种方法是避免在存储中使用#temp Table   过程,而不是你可以使用如下所示的表类型变量   (@TempTable)

更多信息here。请务必阅读该博文中指出的article about table variables in T-SQL

修改 检查this SO question的答案以供参考。