首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTime?转到DateTime

DateTime?转到DateTime
EN

Stack Overflow用户
提问于 2018-04-20 21:39:21
回答 2查看 291关注 0票数 0

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

代码语言:javascript
复制
    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; }
}

在这样的服务中:

代码语言:javascript
复制
        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仍然给出了这个错误:

不能隐式转换类型“System.DateTime?”到“System.DateTime”。存在显式转换(是否缺少强制转换?)

我真的被困住了,我会感谢你的任何建议。谢谢

为我糟糕的英语道歉:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-21 00:24:19

如果使用Server (可能还有其他数据库引擎),则无法在DateTime字段中保存空值。

您必须将NULL转换为日期,任何日期,才能将其保存在db中。通常,Server使用'1900-01-01‘来表示空日期。在大多数情况下,这很好,除非你在18世纪末处理历史数据,否则它不会与你的有效数据发生冲突。当从db读取时,您可以在代码中将值为'1900-01-01‘的所有日期转换为空,如果代码中的值为空,则将其写入db时将其转换为'1900-01-01’。

票数 0
EN

Stack Overflow用户

发布于 2018-04-21 04:43:09

您必须检查Umrti是否为空。

代码语言:javascript
复制
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();
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49950088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档