0

我有一个以 int 作为参数的存储过程。我首先将实体框架代码与 MVC 一起使用,并且以这种方式进行调用

        SqlParameter sa = new SqlParameter("@userId", userId);
        var query = from dashboardData in TBSCIDBContext.Database.SqlQuery<MyNomination>("sp_GetMyNominationList @userId", sa)
                    select dashboardData;
        return query.ToList();

在探查器中我得到

exec sp_executesql N'sp_GetMyNominationList @userId',N'@userId int',@userId=4  

这在使用 sql server 2008 时正确执行,但现在我的数据库更改为 2005,并且相同的 exec 语句给了我

“sp_GetMyNominationList”附近的语法不正确。因为我在 2005 年运行它。

我必须使用 2005 请告诉我一种在 2005 中运行的方法,以便 sql profiler 正确获取参数

4

2 回答 2

0

您应该使用 EntityFramework 来映射您的存储过程。目前,您只是绕过 EF 的全部要点,即在代码和数据库之间提供一层。EntityFramework 将使用存储过程名称创建一个方法调用,该名称采用存储过程所需的参数。

于 2012-10-26T11:11:06.737 回答
0

我的问题的答案是

  SqlParameter sa = new SqlParameter("@userId", userId);
            var query = from dashboardData in TBSCIDBContext.Database.SqlQuery<MyNomination>("exec sp_GetMyNominationList @userId=@userId", sa)
                        select dashboardData;

这有效

于 2013-01-08T14:35:45.463 回答