我有一个5列的数据表,其中一行被数据填充,然后通过事务保存到数据库。
保存时,返回一个错误:
将datetime2数据类型转换为datetime数据类型会导致值超出范围
它暗示,正如阅读,我的数据表有一个类型的DateTime2和我的数据库一个DateTime;这是错误的。
date列设置为DateTime,如下所示:
新数据专栏(“myDate, Type.GetType”)
问题
是否可以在代码中解决这个问题,或者是否必须在数据库级别上更改某些内容?
我有一个5列的数据表,其中一行被数据填充,然后通过事务保存到数据库。
保存时,返回一个错误:
将datetime2数据类型转换为datetime数据类型会导致值超出范围
它暗示,正如阅读,我的数据表有一个类型的DateTime2和我的数据库一个DateTime;这是错误的。
date列设置为DateTime,如下所示:
新数据专栏(“myDate, Type.GetType”)
问题
是否可以在代码中解决这个问题,或者是否必须在数据库级别上更改某些内容?
当前回答
将此代码添加到ASP中的类中。NET为我工作:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2"));
}
其他回答
在我的例子中,当为Nullable DateTime列显式分配NULL值时,然后尝试保存更改。这个错误将会弹出。
在我的例子中,我们将一个Date转换为一个Datetime,我们得到了这个错误。 结果是Date具有“更面向程序员”的最小值01/01/0001,而Datetime则停留在1753
将此与我们的数据收集错误结合起来,您就得到了异常!
正如andyuk已经指出的那样,当NULL值被分配给一个不可空的DateTime字段时,就会发生这种情况。考虑将DateTime更改为DateTime?或可空< DateTime >。请记住,如果您正在使用依赖属性,还应该确保您的依赖属性的类型也是一个可空的DateTime类型。
下面是一个不完整的DateTime到DateTime的真实示例?引起奇怪行为的类型调整
检查DB中的req格式。例如我的DB有默认值或Binding (((1)/(1))/(1900))
System.DateTime MyDate = new System.DateTime( 1900 ,1, 1);
将此代码添加到ASP中的类中。NET为我工作:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2"));
}