我在一个很棒的ASP.NET MVC应用程序上工作。此应用程序包含许多具有日期时间控件的表单此控件的值是可选的。此外,在数据库字段中,此控件的存储值可以为null。
如果用户未填写日期时间控件,则返回最小日期(0001/1/1)。
我经常在日志The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value
中看到下一个例外。我知道如何解决它
例如。
修复之前:
DecisionOfLiquidationData= model.DecisionOfLiquidationData,
CompletionOfLiquidationData = model.CompletionOfLiquidationData
修复后:
DecisionOfLiquidationData= model.DecisionOfLiquidationData==DateTime.MinValue ? null: model.DecisionOfLiquidationData,
CompletionOfLiquidationData = model.CompletionOfLiquidationData == DateTime.MinValue ? null : model.DecisionOfLiquidationData
但是应用程序包含许多在修复之前看起来像的代码。 我的问题是下一个。有没有办法使用web.config或global.asax全局决定这个问题?有哪些想法?
答案 0 :(得分:2)
我的建议是为模型对象的构造函数添加一个默认值,以将您想要的值设置为默认值。
E.g。
public MyDbEntity()
{
myDateProperty = new DateTime(1900,1,1);
}
如果您有很多需要更改DateTime
的模型对象,这可能会进行相当多的输入,但至少每个对象只需要执行一次,然后完成
编辑:请注意,在使用Model First Entity Framework时,您必须创建一个分部类并在那里声明构造函数,以避免在重新生成模型代码时丢失更改。
答案 1 :(得分:0)
您可以nullable ?
使用datetime
public DateTime? DecisionOfLiquidationData {get;set;}
如果没有分配值,它将把值设置为默认值null