实体框架中的datetime2和ProviderManifestToken

Bla*_*oil 5 sql-server-2008 entity-framework-4 asp.net-mvc-2

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

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

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

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

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

Mor*_*avi 3

问题是因为,正如您所说,您没有为实体上的 DateTime 属性设置任何值,这导致它默认为“0001-01-01”,这绝对超出了SQL Server 上日期时间列的范围。datetime 类型的日期范围是1753 年 1 月 1 日到 9999 年 12 月 31 日

要解决此问题,您必须在将属性发送到 SQL Server 之前为其分配一个范围内的值,或者将数据库列类型更改为datetime2,其日期范围为0001-01-01 到 9999-12-31