从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

具体的错误原因是:C#中的DateTime类型比SqlServer中的datetime范围大。SqlServer的datetime有效范围是1753年1月1日到9999年12月31日,如果超出这个范围,EF就会把datetime转换为datetime2,但在数据库的映射类型还是datetime类型,从而出现该异常。

 

try:

把你的edmx中的ProviderManifestToken设置成2005,这样entityframework就会默认转化成datetime了。

结果不成功

 

try:

C#中的Datetime返回和sqlserver中Datetime的方位不一致,C#中的范围较广,将数据库字段类型设为datetime2即可

结果不成功

 

try:

未在edmx文件中设置对应表字段的属性,在edmx文件中找到对应的字段,将属性StoreGeneratedPattern设置为Identity即可
结果不成功

 

我也是犯了同样的一个错误就是没有初始化一个时间的字段造成的,初始化之后就好了!

 

posted @ 2016-04-10 21:39  BloggerSb  阅读(344)  评论(0编辑  收藏  举报