Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF代码首先无法在非复杂的空对象上执行提交_C#_Entity Framework_Ef Code First - Fatal编程技术网

C# EF代码首先无法在非复杂的空对象上执行提交

C# EF代码首先无法在非复杂的空对象上执行提交,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我目前正在SQL Server上首先使用EF代码 这是我的密码: public class Article { public Article(string title, ValidPeriod published) { this.Title = title; this.Published = published; } public int Id { get; set; } public string Title {g

我目前正在SQL Server上首先使用EF代码

这是我的密码:

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持久化一个Article时,我得到了不可为null的成员的null值。。我如何解决这个问题,即如何持久化空类。我没有将ValidPeriod声明为复杂对象。

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

public int Id { get; set; }
然后向项目实体int添加一个显式的可为null的外键?作为可为null的int:

最后,使用fluent api定义项目实体的关系:

HasOptional(c => c.Published)
                .WithMany()
                .HasForeignKey(c => c.ValidPeriodId);

如果它不是复杂对象,则必须具有ID。
HasOptional(c => c.Published)
                .WithMany()
                .HasForeignKey(c => c.ValidPeriodId);