2011-04-18 139 views
2

我已经开发了使用EF4和SQL Server 2005我的网站,但移动到临时站点时,事实证明,他们使用SQL Server 2000EF4与SQL Server 2000中

现在我得到这个错误,我相信有关的SQL Server 2000:

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

是否有解决这个的一种方式?

感谢

+0

我只是做了同样的事情,是要问同一问题的工作。现在我正在考虑不得不完全重新编码我的数据层。 – 2011-04-19 14:42:53

+0

你能不能给我们关于你正在运行,使我们可以尝试拿出一个替代查询不使用ROW_NUMBER函数查询更多信息? – imdondo 2011-04-18 13:21:54

+0

这是EF4创建查询... – user441365 2011-04-18 13:24:03

回答

0

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

无论哪种方式,你可以写一个用户定义函数重新实现ROW_NUMBER。这里的Stackoverflow发布: ROW_NUMBER Alternative for SQL Server 2000

不知道这是否会在长期内做任何好事;你可能会发现你解决这个问题只得到碰到下一个原因,EF不能在SQL 2000年的工作,但,它可能是值得的几分钟尝试。

+0

它是创建查询的EF4 – user441365 2011-04-18 15:33:24

1

我遇到相同问题,并为每个评论/我几乎放弃它弹到客户端上的StackOverflow回应他们的数据库升级到> 2000版。不幸的是,由于许多其他问题,这是不可能的。我不得不去谷歌上搜索周围的解决方案,从什么地方我发现了一个变通。

这就是我所做的。

  • 右键点击ModelName.EDMX文件 - >打开方式
  • 选择XML(文本)编辑器
  • 找到ProviderManifestToken = “2005”,并与 ProviderManifestToken取而代之= “2000”
  • 发布时间改变和瞧!

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

  1. 如果再次更新从数据库模型,并开发 机数据库> = 2000 (这很可能是作为SQL的情况 2000连接未在所有由MS根据this article支持)在XML这个值将改变自动

  2. 此外,这种变化后由EF产生的查询已在工作 我的情况,但我不能保证你的应用程序生成的所有查询以往 将没有任何问题