约会时间?到日期时间

DateTime? to DateTime

我卡住了。我正在创建一个作者数据库,运行 出了问题。我需要将值 Umrti(死亡日期)作为空值保存到数据库,但它始终将该值保存为 01.01.0001。我尝试了一些东西,现在我的代码如下所示:

    public class AutorDetailModel
{
    public int Id { get; set; }
    [Required]
    public string Jmeno { get; set; }
    [Required]
    public string Prijmeni { get; set; }
    public string ProstredniJmeno { get; set; }
    [DotvvmEnforceClientFormat]
    public DateTime Narozeni { get; set; }
    [DotvvmEnforceClientFormat]
    public DateTime? Umrti { get; set; }
    public string Bio { get; set; }
    public string Narodnost { get; set; }
    public byte Obrazek { get; set; }
}

在这样的服务中:

        public async Task UpdateAutorAsync(AutorDetailModel autor)
    {
        using (var dbContext = CreateDbContext())
        {
            var entity = await dbContext.Autors.FirstOrDefaultAsync(s => s.Id == autor.Id);

            entity.Jmeno = autor.Jmeno;
            entity.Prijmeni = autor.Prijmeni;
            entity.ProstredniJmeno = autor.ProstredniJmeno;
            entity.Narozeni = autor.Narozeni;
            entity.Umrti = autor.Umrti;
            entity.Bio = autor.Bio;
            entity.Narodnost = autor.Narodnost;
            entity.Obrazek = autor.Obrazek;


            await dbContext.SaveChangesAsync();
        }
    }

但是,autor.Umrti 仍然给我这个错误:

Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime'. An explicit conversion exists (are you missing a cast?)

我真的被困住了,将不胜感激任何建议。谢谢

抱歉我的英语不好:)

如果您正在使用 SQL 服务器(也可能是其他数据库引擎),那么您不能在 DateTime 字段中保存 NULL 值。

您必须将 NULL 转换为日期,任何日期,才能将其保存在数据库中。通常 SQL 服务器使用“1900-01-01”来表示 NULL 日期。在大多数情况下这很好,因为除非您使用的是 18 世纪末左右的历史数据,否则它不会与您的有效数据发生冲突。从数据库中读取时,您可以在代码中将所有值为“1900-01-01”的日期转换为 null,而在写入数据库时​​,如果代码中的值为 null,则将其转换为“1900-01-01” .

您必须检查 Umrti 是否为空

public async Task UpdateAutorAsync(AutorDetailModel autor)
    {
        using (var dbContext = CreateDbContext())
        {
            var entity = await dbContext.Autors.FirstOrDefaultAsync(s => s.Id == autor.Id);

            entity.Jmeno = autor.Jmeno;
            entity.Prijmeni = autor.Prijmeni;
            entity.ProstredniJmeno = autor.ProstredniJmeno;
            entity.Narozeni = autor.Narozeni;
           if(autor.Umrti!=null)
              entity.Umrti = autor.Umrti;
            entity.Bio = autor.Bio;
            entity.Narodnost = autor.Narodnost;
            entity.Obrazek = autor.Obrazek;


            await dbContext.SaveChangesAsync();
        }
    }