【问题标题】:passing parameters to stored procedure entity framework with sql server 2005使用 sql server 2005 将参数传递给存储过程实体框架
【发布时间】:2012-10-26 09:20:48
【问题描述】:

我有一个以 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 正确获取参数

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我的问题的答案是

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

      这行得通

      【讨论】:

        猜你喜欢
        • 2016-02-19
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-21
        • 1970-01-01
        • 2015-12-20
        • 2013-07-06
        相关资源
        最近更新 更多