嗨,我想弄清楚如何用我的域模型解决这个问题。我已经做了一个我正在处理的简化示例 - 使用两个父类和两个子类。
我有从父母到孩子的多条路径:
- 父 1 --> 子 1
- 父 1 --> 子 2
- 父 1 --> 父 2 --> 子 1
- 父 2 --> 子 1
这给了我以下错误:{“引用关系将导致不允许的循环引用。[约束名称= Child1_Parent2]”}
我知道这是因为有多个级联路径,但我不知道如何解决这个问题。我可以使用注释来做到这一点还是需要使用流畅的映射?
我希望模型能够像这样运行:
- 如果 Parent1 被删除: Child1 应该被删除, Child2不应该被删除。
- 如果 Parent2 被删除: Parent1和Child1 应该被删除, 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; }
}