如何使用将表与实体框架一起使用的存储过程

本文关键字:一起 存储过程 框架 实体 何使用 | 更新日期: 2023-09-27 18:33:25

我似乎无法将其读入实体框架并使用 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 表 过程,而不是您可以使用如下所示的表类型变量 (@TempTable)

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

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