我有以下型号
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public Child LastChild { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
public int ParentId { get; set; }
public Parent Parent { get; set; }
}
我想做的是建立两种关系:
现在,我为模型构建器提供了以下代码:
modelBuilder.Entity<Child>()
.HasKey(child => child.Id);
modelBuilder.Entity<Parent>()
.HasKey(parent => parent.Id)
.HasMany(parent => parent.Children)
.WithRequired(child => child.Parent)
.HasForeignKey(child => child.ParentId);
modelBuilder.Entity<Parent>()
.HasOptional(parent => parent.LastChild)
.WithRequired(children => children.Parent);
一对多关系没有问题,但Zero或One to One导致以下异常:
Parent_LastChild_Target :: Multiplicity在Role&#39; Parent_LastChild_Target&#39;中无效。在关系&#39; Parent_LastChild&#39;。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为&#39; *&#39;。
这种关系在实体框架下是否可行?如果它能做到如何实现理想的关系?