And*_*ews 5 .net compatibility linq-to-entities sql-server-2005
我有一个LINQ to Entities应用程序和一个数据库项目来管理针对.NET 4.0的VS 2010解决方案中的架构.目前,实体模型是从数据库中进行逆向工程的.其中一个表定义了一个datetime类型的列.数据库项目配置为使用SQL Server 2005兼容模式,因此它都可以正常部署.
我刚刚遇到一个问题,通过实体框架的更新语句似乎使用datetime2而不是datetime,这会导致异常,因为SQL 2005不支持该数据类型:
System.Data.UpdateException: An error occurred while updating the entries.
See the inner exception for details. ---> System.ArgumentException: The version
of SQL Server in use does not support datatype 'datetime2'.
Run Code Online (Sandbox Code Playgroud)
从堆栈跟踪显示错误似乎发生在:
System.Data.Mapping.Update.DynamicUpdateCommand
Run Code Online (Sandbox Code Playgroud)
我查看了所有SQL代码和实体代码,并确认datetime2没有引用(包括dbschema文件).我只能得出结论,数据类型是在实体框架生成的动态SQL查询中生成的.
我怎样才能确认或否认这一点,以及如何阻止它发生?实体框架不知道我已经要求db项目以2005兼容性模式为目标,并且我看不到一种方法来指出它正在查看的版本.为了它的价值,我在安装了2008 Express的机器上创建了这个项目,但我定期切换到另一台没有(并且还不能升级)的机器.