EF 4.1 Code First - 循环参考问题(MVC 3)

时间:2012-07-24 12:40:23

标签: c# asp.net-mvc-3 entity-framework-4.1 ef-code-first sql-server-ce

您好我正试图弄清楚如何使用我的域模型来解决这个问题。 我已经为我正在处理的内容做了一个简化的例子 - 使用两个父类和两个子类。

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

  • Parent1 - > Child1
  • Parent1 - >的child2
  • Parent1 - > Parent2 - > Child1
  • Parent2 - > Child1

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

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

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

  • 如果删除Parent1:应删除Child1,不应删除
  • 的Child2。
  • 如果删除Parent2:应删除Parent1 Child1,不应删除
  • 的Child2。
  • 如果删除Child1:仅删除Child1。
  • 如果删除Child2:仅删除Child2。

以下是课程:

Parent1

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

Parent2

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

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

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

Child1

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

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

CHILD2

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

    public Parent1 Parent1 { get; set; }
}

0 个答案:

没有答案