“将datetime2数据类型转换为datetime数据类型导致超出范围的值。”我该如何解决

时间:2019-06-21 01:25:33

标签: entity-framework ef-core-2.1 ef-core-2.2

我搜索了这个问题,有很多问题,但是所有答案都没有用,这并不能解决我的问题。首先,我无法对数据库进行任何更改,我必须保留数据库的列定义,以便如何解决此问题?

数据库定义:

[DeletedDate] [datetime] NULL,

C#代码表示:

public DateTime? DeletedDate { get; set; }

我遇到一个错误:

从datetime2数据类型到datetime数据类型的转换导致值超出范围。 该语句已终止。    在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔值breakConnection,Action`1 wrapCloseInAction)处。...

我已经尝试过了,但是对我没有用

[Column(TypeName = "datetime2")]
 public DateTime? PropertyName { get; set; }

编辑:问题是关于我试图将0001/01/01 ...发送到datetime值到sql。并造成了问题。

FLUENT API解决了我的问题。

entity.Property(e => e.CreatedDate).HasColumnName("CreatedDate").HasDefaultValueSql("(getdate())");
entity.Property(e => e.UpdatedDate).HasColumnName("UpdatedDate").HasDefaultValueSql("(getdate())");

1 个答案:

答案 0 :(得分:0)

在保存或更新数据库try之前,您的属性DeletedDate包含的值小于SqlDateTime.MinValue.Value支持的值

if(DeletedDate < SqlDateTime.MinValue.Value)
 DeletedDate = SqlDateTime.MinValue.Value