'row_number'不是可识别的函数名称。关键字“AS”附近的语法不正确

时间:2009-06-23 07:46:53

标签: c# entity-model dynamic-data-site

4 个答案:

答案 0 :(得分:5)

我知道这是一个老线程,但我认为它仍然有一些重要性。

我遇到了同样的问题。我正在开发sql2008服务器并部署到sql2000服务器。不要在2000机器上进行开发,而是在wordpad中打开.edmx文件并将清单标记更改为“2000”。然后重建并发布。比在不同的机器上开发容易得多。

答案 1 :(得分:2)

ROW_NUMBER()用于执行Skip / Take之类的操作,至少在SQL Server 2005/2008上是这样。如果您的目标是早期版本的SQL Server,可能会感到困惑。

LINQ-to-SQL使合理的尝试支持SQL 2000(尽管并非所有内容都受支持) - 但老实说,我不知道EF是否会这样做。

答案 2 :(得分:2)

查看异常,似乎连接指向不是SQL 2005的SQL Server数据库。

SQL 2005支持ROW_NUMBER。

答案 3 :(得分:2)

好吧,我做了一个简单的测试。我已将我的项目与SQL Server 2000数据库连接,安装数据库并运行SQL脚本。然后 - 没有重新编译 - 我使用我的网站连接到这个数据库,它失败了。这是同样的错误。

然后是测试的下一部分:我在项目中刷新了实体模型并重新编译了整个项目。仍然与SQL Server 2000连接,我再次启动该网站,那里,我的美丽网站。 : - )

事实证明,实体模型(和LINQ-TO-SQL)将检测编译项目时使用的数据库。如果您使用2005,则最终代码将针对2005进行优化,您将无法在SQL Server 2000上安装整个代码。

因此,令人讨厌,我将不得不继续在SQL Server 2000机器上开发。 (然后踢别人的屁股,因为他应该在类似于最终用户的系统上测试我的设置!)