在EF Code First和SQL 2005中导致"<存储过程名称>附近的语法不正确"的原因是什么?

Dan*_*ork 8 stored-procedures entity-framework sql-server-2005 code-first ef-code-first

我发现的System.Data.Entity.Database.SqlQuery方法的示例似乎与SQL 2008 R2兼容,但似乎不适用于SQL 2005.

此调用适用于SQL 2008 R2:

var myEntities = dbContext.Database.SqlQuery<MyEntity>("GetDataFromMySp @EntityId = {0}", entityId);
Run Code Online (Sandbox Code Playgroud)

但是,在SQL 2005中,此语句将抛出一个SqlException,并显示错误消息"GetDataFromMySp'附近的语法不正确".

Ped*_*C88 18

@Dan自己发现的解决方案(由于代表无法发布)

我发现这个问题的解决方案只是在查询中添加关键字"EXEC":

var myEntities = dbContext.Database.SqlQuery<MyEntity>("EXEC GetDataFromMySp @EntityId = {0}", entityId);
Run Code Online (Sandbox Code Playgroud)

此解决方案解决了SQL Server 2005的问题,仍然可以使用SQL Server 2008 R2.