答案 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机器上开发。 (然后踢别人的屁股,因为他应该在类似于最终用户的系统上测试我的设置!)