.net EF:更改ProviderManifestToken还是更改数据类型?
两个问题,然后是细节:.net EF:更改ProviderManifestToken还是更改数据类型?,.net,sql-server-2008,datetime,entity-framework-4,datetime2,.net,Sql Server 2008,Datetime,Entity Framework 4,Datetime2,两个问题,然后是细节: 当我将ProviderManifestToken更改为“2005”时,还会发生哪些其他副作用 将数据库中的模式从datetime更改为datetime2是否不明智?例如,如果我将ProviderManifestToken保留为“2008”,而稍后有人试图从EDMX模型生成数据库架构,那么在创建这些列时,它会为这些列使用datetime2数据类型吗 详情: VS2010 SP1 .NET 4 EF 4 SQL Server 2008 我没有实践实体框架的经验,我突然维护了一
datetime
更改为datetime2
是否不明智?例如,如果我将ProviderManifestToken保留为“2008”,而稍后有人试图从EDMX模型生成数据库架构,那么在创建这些列时,它会为这些列使用datetime2
数据类型吗.NET 4
EF 4
SQL Server 2008 我没有实践实体框架的经验,我突然维护了一个使用它的代码库。代码库很脆弱,日程安排很紧,留下来的人还没有很好地理解它 解决方案资源管理器显示一个EDMX文件,该文件映射到我们的开发人员数据库中的现有模式。我不知道哪个(模型或数据库)是第一位的 提交操作失败,出现以下错误: 将datetime2数据类型转换为datetime数据类型 导致值超出范围 当我查看SQL Server 2008实例中日期/时间列的数据类型时,它们都是
datetime
,而不是datetime2
当我查看EDMX文件的XML时,我看到以下模式元素属性:
ProviderManifestToken=“2008”
我猜,在我的.NET代码的某个地方,有一个DateTime值,它的值超出了SQLServer2008的DateTime
数据类型的范围。我从阅读中了解到,将EDMX的ProviderManifestToken更改为“2005”将阻止EF在这些提交期间尝试使用datetime2
类型
这是我的问题:如果我从2008年改到2005年,我不知道这个代码库或EF在代码库中的位置还会有什么变化,我有一个偏见,就是当技术不是绝对需要的时候,我不喜欢向后移动。如果将ProviderManifestToken改到2005年,有些东西确实将不再起作用。具体来说,LINQ查询使用与SQL 2008时间类型相关的函数。我个人并没有因为将令牌更改为2005而遇到任何问题(即使在多个环境中基于每个环境)…但这不是一件可以掉以轻心的事情。您需要彻底测试应用程序中的所有查询
至于edmx以相反的方向生成的模式,这是由与您的edmx关联的SQL生成模板决定的,而不是ProviderManifestToken本身。如果将ProviderManifestToken更改为2005,有些东西确实将不再起作用。具体来说,LINQ查询使用与SQL 2008时间类型相关的函数。我个人并没有因为将令牌更改为2005而遇到任何问题(即使在多个环境中基于每个环境)…但这不是一件可以掉以轻心的事情。您需要彻底测试应用程序中的所有查询 至于edmx以相反方向生成的模式,这是由与edmx关联的SQL生成模板决定的,而不是由ProviderManifestToken本身决定的