C# EF代码首先无法在非复杂的空对象上执行提交
我目前正在SQL Server上首先使用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
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);