使用sql server 2005将参数传递给存储过程实体框架

时间:2012-10-26 09:20:48

标签: entity-framework

我有一个存储过程,它接受一个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正确地获取参数

2 个答案:

答案 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;

这有效