实体框架中的datetime2和ProviderManifestToken

时间:2010-10-30 19:03:10

标签: sql-server-2008 asp.net-mvc-2 entity-framework-4

我有一个使用Entity Framework和SQL Server 2008数据库的MVC应用程序。我使用EF向导生成我的数据模型。

我有一个带有标准DateTime列的SQL Server表。 EF模型使用System.DateTime

但是当我尝试从我的应用程序向此表插入一条新记录时,没有为此DateTime列指定值,我收到错误:

  

将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。

我用Google搜索了一下,发现人们正在编辑edmx并更改ProviderManifestToken。可疑的是,这将被覆盖,那么是否有更永久的解决方法或方法来解决这个问题?

1 个答案:

答案 0 :(得分:3)

问题是因为,就像你说的那样,你没有在实体上为该DateTime属性设置任何值,导致它默认为'0001-01-01',这肯定超出 <的范围SQL Server上的em> datetime 列。日期时间类型日期范围是 1753年1月1日至9999年12月31日

要解决此问题,您必须先将范围值分配给该属性,然后再将其发送到SQL Server,或将数据库列类型更改为datetime2,其日期范围为 0001-01-01至9999-12-31

相关问题