EF代码首先无法对非复杂的null对象进行提交

问题描述 投票:0回答:1

我目前首先使用EF代码与SQL Server。

这是我的代码:

public class Article
{
    public Article(string title, ValidPeriod published)
    {
        this.Title = title;
        this.Published = published;
    }

    public int Id { get; set; }   
    public string Title {get;set;}
    public ValidPeriod Published { get; set; }
}

public class ValidPeriod()
{
    public DateTime From { get; set; }
    public DateTime To { get; set; }
}

我能够创建一个Article类的实例,但是当我尝试使用null ValidPeriod持久保存文章时,我得到“非可空成员的空值”。我该如何解决这个问题,即。如何保持null类。我没有将ValidPeriod声明为复杂对象。

c# entity-framework ef-code-first
1个回答
1
投票

一种可能的解决方案是首先为Id实体定义主键ValidPeriod,如下所示:

public int Id { get; set; }

然后将一个显式可空的外键添加到Article实体(int?作为可空的int):

public int? ValidPeriodId { get; set; }

最后使用流畅的api定义Article实体的关系:

HasOptional(c => c.Published)
                .WithMany()
                .HasForeignKey(c => c.ValidPeriodId);
© www.soinside.com 2019 - 2024. All rights reserved.