1

嗨,我想弄清楚如何用我的域模型解决这个问题。我已经做了一个我正在处理的简化示例 - 使用两个父类和两个子类。

我有从父母到孩子的多条路径:

  • 父 1 --> 子 1
  • 父 1 --> 子 2
  • 父 1 --> 父 2 --> 子 1
  • 父 2 --> 子 1

这给了我以下错误:{“引用关系将导致不允许的循环引用。[约束名称= Child1_Parent2]”}

我知道这是因为有多个级联路径,但我不知道如何解决这个问题。我可以使用注释来做到这一点还是需要使用流畅的映射?

我希望模型能够像这样运行:

  • 如果 Parent1 被删除: Child1 应该被删除, Child2应该被删除。
  • 如果 Parent2 被删除: Parent1Child1 应该被删除, Child2应该被删除。
  • 如果删除 Child1:仅删除 Child1。
  • 如果 Child2 被删除:仅 Child2 被删除。

以下是课程:

家长1

public class Parent1
{
    [Key]
    public int Id { get; set; }

    [Required]
    public virtual Parent2 Parent2 { get; set; }

    public virtual ICollection<Child1> Children1 { get; set; }
    public virtual ICollection<Child2> Children2 { get; set; }

    public Parent1()
    {
        Children1 = new List<Child1>();
        Children2 = new List<Child2>();
    }
}

父母2

public class Parent2
{
    [Key]
    public int Id { get; set; }

    public virtual ICollection<Child1> Children1 { get; set; }

    public Parent2()
    {
        Children1 = new List<Child1>();
    }
}

孩子1

public class Child1
{
    [Key]
    public int Id { get; set; }

    [Required]
    public Parent1 Parent1 { get; set; }
    [Required]
    public Parent2 Parent2 { get; set; }
}

孩子2

public class Child2
{
    [Key]
    public int Id { get; set; }

    public Parent1 Parent1 { get; set; }
}
4

0 回答 0