gpt4 book ai didi

.net - LINQ to Entities 在 SQL 2005 Express 上生成包含 datetime2 的查询

转载 作者:行者123 更新时间:2023-12-03 05:08:54 25 4
gpt4 key购买 nike

我有一个 LINQ to Entities 应用程序和一个数据库项目,用于管理面向 .NET 4.0 的 VS 2010 解决方案中的架构。实体模型目前是从数据库进行逆向工程的。其中一个表是用日期时间类型的列定义的。数据库项目配置为使用 SQL Server 2005 兼容模式,因此一切部署正常。

我刚刚遇到一个问题,通过 Entity Framework 的更新语句似乎使用 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'.

从堆栈跟踪中可以看出,错误似乎发生在以下位置:

System.Data.Mapping.Update.DynamicUpdateCommand

我检查了所有 SQL 代码和实体代码,并确认不存在对 datetime2 的引用(包括 dbschema 文件)。我只能得出结论,该数据类型是在 Entity Framework 生成的动态SQL查询中生成的。

我如何确认或否认这一点,以及如何阻止它发生? Entity Framework 不知道我已要求 db 项目以 2005 兼容模式为目标,并且我看不到一种方法来指出它正在查看的版本。无论如何,我在一台安装了 2008 Express 的机器上创建了这个项目,但我会定期切换到另一台没有安装(并且还无法升级)的机器。

最佳答案

您需要将 EDMX 内的 ProviderManifestToken 更改为值 2005。您可能是根据 2008 年的数据库生成的数据库。进行此更改后,EF 将停止使用 2008 语法。

关于.net - LINQ to Entities 在 SQL 2005 Express 上生成包含 datetime2 的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3350066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com