【问题标题】:Stored procedure execution in Entity Framework in SQL Server 2005SQL Server 2005 实体框架中的存储过程执行
【发布时间】:2012-10-04 05:23:02
【问题描述】:

我正在使用 MVC3 和实体框架在 SQL Server 2008 中调用存储过程。该过程没有参数,并且在探查器中我将 proc 执行为

exec sp_executesql N'sp_GetDashSessionboardRoomTimeSlot', N'@p0 nvarchar(4000)', @p0=NULL

这就是我在 c# 代码中的调用方式。

SqlParameter sa = null;
var query = from dashboardData in TBSCIDBContext.Database.SqlQuery<SessionDashboardData>("sp_GetDashSessionboardRoomTimeSlot", sa)
            select dashboardData;

这很好用。但是我已经将我的数据库更改为 SQL Server 2005,我需要使用它

因此,当我使用相同的 C# 代码调用相同的过程时,分析器返回相同的 exec 语句,但 sql 给出错误

“sp_GetDashSessionboardRoomTimeSlot”附近的语法不正确

请帮助我解决这个问题,因为我需要在 SQL Server 2005 中使用这个存储过程

【问题讨论】:

  • 旁注:您应该为您的存储过程使用sp_ 前缀。该前缀由 Microsoft 保留供自己使用 - 这会导致性能损失,并可能导致与 Microsoft 在未来版本中提供的存储过程发生冲突。

标签: sql-server-2008 entity-framework sql-server-2005 stored-procedures


【解决方案1】:

改成

var query = from dashboardData in TBSCIDBContext.Database.SqlQuery("sp_GetDashSessionboardRoomTimeSlot") 选择仪表板数据;

有效

【讨论】:

    【解决方案2】:

    将 SSDL(在您的 EDMX 中)中的 ProviderManifestToken 更改为 2005。您可能已将其设置为 2008。

    【讨论】:

    • 您好,我先使用实体​​框架代码。你能告诉我如何做这个改变,我应该在哪里做这个改变(因为我之前没有使用过 ef
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多