Asp.net mvc 3 将日期时间保存到代码首次生成的数据库异常
我有以下模型实体:Asp.net mvc 3 将日期时间保存到代码首次生成的数据库异常,asp.net-mvc-3,entity-framework,datetime,sqlexception,Asp.net Mvc 3,Entity Framework,Datetime,Sqlexception,我有以下模型实体: public class ScheduledTask { public virtual int ScheduledTaskId { get; set; } public virtual Incident TemplateIncident { get; set; } //Some props are omitted for simplicity [Display(Name = "Next r
public class ScheduledTask
{
public virtual int ScheduledTaskId { get; set; }
public virtual Incident TemplateIncident { get; set; }
//Some props are omitted for simplicity
[Display(Name = "Next runtime")]
[Required]
[DataType(DataType.DateTime)]
public virtual DateTime NextExecuteAfterDate { get; set; }
}
它是DataContext的一部分,如:
public DbSet<ScheduledTask> ScheduledTasks { get; set; }
如您所见,我正在创建实体类的一个实例,为DateTime
属性指定一个最小值,并将其添加到DbContext
中。然后我调用SaveChanges()
SaveChages()
生成
[SqlException (0x80131904): The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.
The statement has been terminated.]
数据库中的NextExecuteAfterDate
是类型为datetime的列,不为null
datetime2从何而来,如何解决问题并让EF向表中添加行?sql server希望在数据库中存储1.1.0001,但这不在sql server DateTimes的范围内。 我对EF的使用不多,但在其他ORM中,您可以简单地将DateTime更改为Nullable并显式存储null值。 像这样:
public class ScheduledTask
{
public virtual int ScheduledTaskId { get; set; }
public virtual Incident TemplateIncident { get; set; }
//Some props are omitted for simplicity
[Display(Name = "Next runtime")]
[DataType(DataType.DateTime)]
public virtual DateTime? NextExecuteAfterDate { get; set; }
}
可能这也适用于EFsql server希望在数据库中存储1.1.0001,但这不在sql server日期时间的范围内。 我对EF的使用不多,但在其他ORM中,您可以简单地将DateTime更改为Nullable并显式存储null值。 像这样:
public class ScheduledTask
{
public virtual int ScheduledTaskId { get; set; }
public virtual Incident TemplateIncident { get; set; }
//Some props are omitted for simplicity
[Display(Name = "Next runtime")]
[DataType(DataType.DateTime)]
public virtual DateTime? NextExecuteAfterDate { get; set; }
}
也许这也适用于EF是的,我不知道一个事实,即.Net的DateTime.MinValue不与SQLDateTime一起使用。是的,我不知道一个事实,即.Net的DateTime.MinValue不与SQLDateTime一起使用。