-1

我在一个大型的 ASP.NET MVC 应用程序上工作。这个应用程序包含许多带有日期时间控件的表单。此控件的值是可选的。同样在数据库字段中,此控件中的存储值可以为空。如果用户未填写日期时间控件,则返回最小日期 (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 在全球范围内解决这个问题?有哪些想法?

4

2 回答 2

2

我的建议是为模型对象的构造函数添加一个默认值,以将您想要的值设置为默认值。

例如

public MyDbEntity()
{
    myDateProperty = new DateTime(1900,1,1);
}

如果您有很多DateTime需要更改 s 的模型对象,这可能需要大量的输入,但至少您只需要为每个对象执行一次,然后您就完成了。

编辑:请注意,在使用 Model First Entity Framework 时,您必须创建一个部分类并在那里声明构造函数,以避免在重新生成模型代码时丢失您的更改。

于 2017-03-06T16:15:40.553 回答
0

你可以nullable ?datetimelike

public DateTime? DecisionOfLiquidationData {get;set;}

null如果没有分配值,它将做的是将值设置为默认值

于 2017-03-06T16:27:07.377 回答