繁体   English   中英

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

[英]How can I use a stored procedure that uses tables with 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

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

·第二种方法是避免在存储过程中使用#temp Table,而不是像下面那样使用Table类型变量(@TempTable)

更多信息在这里 请务必阅读该博客文章中指出的有关T-SQL中的表变量的文章。

编辑:检查此SO问题的答案以供参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM