开发者

datetime2 and ProviderManifestToken in Entity Framework

开发者 https://www.devze.com 2023-01-23 07:25 出处:网络
I have an MVC app using Entity Framework and a SQL Server 2008 database. I used the EF wizard to generate my data model.

I have an MVC app using Entity Framework and a SQL Server 2008 database. I used the EF wizard to generate my data model.

I have a SQL Server table with a standard Da开发者_StackOverflow中文版teTime column. The EF model is using System.DateTime.

But when I try to insert a new record into this table from my application, without specifying a value for this DateTime column, I get the error:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.

I Googled a bit and found that people are editing the edmx and changing the ProviderManifestToken. Ovbiously that will be overwritten, so is there a more permanent fix or way to fix this?


The problem is because, like you said, you're not setting any value for that DateTime property on the entity which causes it to default to '0001-01-01' which is definitely out of range for datetime column on SQL Server. The datetime type date range is January 1, 1753, through December 31, 9999.

To solve this, you have to either assign an in range value to that property before sending it to SQL Server, or change your DB column type to datetime2 which has a date range of 0001-01-01 through 9999-12-31.

0

精彩评论

暂无评论...
验证码 换一张
取 消