可选择为必需关系

时间:2014-12-28 15:40:23

标签: c# sql sql-server entity-framework

我有以下型号

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; }
}

我想做的是建立两种关系:

  • 一位有很多孩子的父母
  • 一位有OPTIONAL ONE孩子的父母。

现在,我为模型构建器提供了以下代码:

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;。

这种关系在实体框架下是否可行?如果它能做到如何实现理想的关系?

0 个答案:

没有答案