我有一个存储过程,它接受一个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正确地获取参数
答案 0 :(得分:0)
您应该将EntityFramework用于map your stored procedures。目前,您只是绕过EF的全部内容,即在代码和数据库之间提供一个层。 EntityFramework将使用存储过程名称创建一个方法调用,该名称接受存储过程所需的参数。
答案 1 :(得分:0)
我的问题的答案是
SqlParameter sa = new SqlParameter("@userId", userId);
var query = from dashboardData in TBSCIDBContext.Database.SqlQuery<MyNomination>("exec sp_GetMyNominationList @userId=@userId", sa)
select dashboardData;
这有效