为什么我使用Linq to Enities本地开发都正常(sql server 2000),放到服务器上(sql server 2005)就出错?

[已解决] 为什么我使用Linq to Enities本地开发都正常(sql server 2000),放到服务器上(sql server 2005)就出错?

20
[Web开发 > ASP.NET > ASP.NET MVC]
我本地开发使用的是SQL Server2005(SQL Server 2008测试也可以通过),但是服务器上使用的是SQL Server 2000的数据库,是不是和这个有关呢?

出错信息:
Exception Details: System.Data.SqlClient.SqlException: Line 7: Incorrect syntax near '('.

我看了一下这个括号“(”,其实是在SELECT TOP (1)这里。

这是怎么回事呢?
提问时间:2010/3/20 11:38:31 | 提问者:GaLiJiKuai | 悬赏:20 | 浏览:489
最佳答案
这是因为EF会根据不同的数据库版本,生成对应的、有效的SQL语句,有些SQL2005的语法在SQL2000中不被支持。

需要解决这个问题,你需要用文本编辑器或XML编辑器打开Linq to Entities文件(.edmx),注意,不能可视化的图形使用打开!
如果需要在VS中打开,可以对.edmx文件点右键,选择“打开方式”,然后选则一个和XML有关的编辑器就可以了。
打开之后,找到<Schema ...>节点,如:
   <Schema Namespace="SenparcModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2006/04/edm/ssdl">

里面有一个属性叫ProviderManifestToken,ProviderManifestToken的值根据生成这个EF文件时的SQL版本而定,如果你开发环境是SQL2005,那么这里就是2005。现在,你只需要将2005改为2000,并且重新编辑,就可以在SQL2000的服务器上正常运行了。
回答时间:2010/3/20 12:06:24 | 回答者:zsu
其他参考答案(0)
提交失败!请检查错误!错误信息:

注:以上所有信息由网友提供,仅供交流、参考,均不代表盛派网络言论,如果有任何问题或不妥,请立即联系我们

以下信息或许对您有用: