EF4& SQL Server 2000

时间:2011-04-18 13:14:44

标签: sql sql-server asp.net-mvc

我使用EF4和SQL Server 2005开发了我的网站,但是当转移到临时站点时,他们发现他们使用的是SQL Server 2000。

现在我收到此错误,我认为这与SQL Server 2000有关:

Incorrect syntax near '('. 'row_number' is not a recognized function name.

有没有办法解决这个问题?

由于

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

我遇到了完全相同的问题,根据StackOverflow上的评论/回复,我几乎放弃了,并将其轻弹到客户端,将其数据库升级为> 2000版。不幸的是,由于许多其他问题,他们无法做到这一点。我不得不到谷歌搜索解决方案,从某个地方我找到了解决办法。

这就是我所做的。

  • 右键单击ModelName.EDMX文件 - >打开
  • 选定的XML(文本)编辑器
  • 找到ProviderManifestToken =“2005”并将其替换为 ProviderManifestToken = “2000”
  • 发布了更改并瞧!

现在我说这是一个解决方法(不是解决方案)的原因是因为

  1. 如果您再次从数据库更新模型并进行开发 机器数据库是> = 2000(这可能是SQL的情况 根据{{​​3}},MS根本不支持2000连接.XML中的此值将自动更改

  2. 此外,此更改后EF生成的查询已经有效 我的情况,但我不能保证所有的查询 由您的应用程序生成的工作没有任何问题

答案 2 :(得分:0)

Row_Number()返回返回的每一行的序号。你在调用Row_number(),还是实体框架?

无论哪种方式,您都可以编写一个重新实现ROW_NUMBER的用户定义函数。 Stackoverflow帖子就在这里: ROW_NUMBER Alternative for SQL Server 2000

从长远来看,不确定这会有什么好处;你可能会发现你解决这个问题只是为了遇到EF在SQL 2000上无法工作的下一个原因。但是,尝试几分钟可能是值得的。