更新可以为空DateTime领域为无结果的默认DateTime值(0001-01-01 00:00:00.0000000)

0

的问题

我在使用ASP.NET 样板视(非核心)的模板在我的项目,该项目使用EF6为奥姆. 数据库是SQL Server表达。

这里是我的实体对象(忽略的非相关性):

public class Asset : AggregateRoot<long>
{
    [DataType(DataType.DateTime)]
    public DateTime? LastControlTime { get; set; }
}

当我创建一个新的资产,这一领域适当地创造了作为空。 所以,一切都作为intented在第一次。 但是当我尝试更新对象的一个简单的服务电话,螺丝起来。

这里的方法中的应用程序的服务类别:

public void ResetLastControlTime (EntityDto<long> input)
{
    var asset = Repository.Get(input.Id);
    asset.LastControlTime = default(DateTime?);
}

这应该重置这一领域为空。 我也试过 asset.LastControlTime = null;. 但是,在结束它写"0001-01-01 00:00:00.0000000"这一领域的数据库。 我有很多地方代码,我控制空值,所以现在我不得不改变吨的旧文件或者我必须找到某种方式重设这一领域的简单的空。

我检查了类似的问题在这里,但无法找到一个答案。 所有的他们告诉关于可空的日期时间,我已经有了。 在SQL表服务器架构、数据类型 datetime2(7)所以我想这是正确的。 哦,和删除的数据类型的注释也没有改变任何东西。

所以我是什么丢在这里? 我应该怎么查到找到问题?

1

最好的答案

2

我想如果一切都失败时,可以简化大多数的代码通过重新实施的财产:

public class Asset : AggregateRoot<long>
{
    public DateTime? _LastControlTime;
    [DataType(DataType.DateTime)]
    public DateTime? LastControlTime { 
      get {
        return _LastControlTime;
      }
      set {
        if (value == DateTime.MinValue) {
          _LastControlTime = null;
        } else {
          _LastControlTime = value;
        }
    }
}

它并不真正切的核心问题,但是会让你们进展没有必要改变所有==null。HasValue在整个程序。

2021-11-23 11:44:25

它的工作! 因此它似乎问题之间的某个储存库和奥姆样板代码转换空值最低的日期时间。 我不知道它是什么但是我太忙照顾的权利。 因此,非常感谢你这一简单的解决方案。
Emre Can Serteli

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................