【发布时间】:2011-10-04 14:50:51
【问题描述】:
两个问题,后面是细节:
- 当我将 ProviderManifestToken 更改为“2005”时,还会出现哪些其他副作用?
- 将数据库中的架构从
datetime更改为datetime2是否不明智?例如,如果我将 ProviderManifestToken 保留为“2008”,然后有人尝试从 EDMX 模型生成数据库架构,它会在创建这些列时使用datetime2数据类型吗?
详情:
VS2010 SP1
.NET 4
EF 4
SQL Server 2008
我没有动手实体框架的经验,我突然维护了一个使用它的代码库。代码库很脆弱,时间紧迫,留下来的人还不太了解。
解决方案资源管理器显示一个 EDMX 文件,该文件映射到我们 DEV 数据库中的现有架构。我不知道哪个(模型或数据库)先出现。
提交操作失败并出现此错误:
将 datetime2 数据类型转换为 datetime 数据类型 导致超出范围的值。
当我查看 SQL Server 2008 实例中日期/时间列的数据类型时,它们都是 datetime,而不是 datetime2。
当我查看 EDMX 文件的 XML 时,我看到了这个 Schema 元素属性:
ProviderManifestToken="2008"
我猜想,在我的 .NET 代码中的某个地方有一个 DateTime 值,它的值超出了 SQL Server 2008 的 datetime 数据类型的范围。我从阅读中了解到,将 EDMX 的 ProviderManifestToken 更改为“2005”会阻止 EF 在这些提交期间尝试使用 datetime2 类型。
这是我的问题:我不知道如果我从 2008 年到 2005 年更改此代码库或 EF 在其中的位置会发生什么变化,而且我倾向于在技术不是绝对需要的情况下倒退.
【问题讨论】:
标签: .net sql-server-2008 datetime entity-framework-4 datetime2