是否可以将应用程序配置为将DateTime.MinValue替换为null?

时间:2017-03-06 14:06:24

标签: c# entity-framework datetime null datetime2

我在一个很棒的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全局决定这个问题?有哪些想法?

2 个答案:

答案 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