我有两个模特。
BdoSubSystem:
public class BdoSubSystem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
}
和BdoSystem:
public class BdoSystem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<BdoSubSystem> SubSystems { get; set; }
}
我使用迁移在Azure上自动创建表。问题是子系统不是特定于每个系统,子系统可能有多个父系统,并且可以出现在多个系统中。但通过这种方式,每个子系统都属于每个系统。
子系统如何在多个系统中出现?
答案 0 :(得分:1)
好,谢谢大家。解决方案是在子系统中引用并使用[JsonIgnore]
public class BdoSubSystem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
[JsonIgnore]
public virtual ICollection<BdoSystem> SubSystems { get; set; }
}
答案 1 :(得分:0)
如果我很好理解,SubSystem只是System的王者,系统作为父级?
如果我的判决为真,您可以使用自我引用
public class BdoSystem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public int? ParentSystemId { get; set; }
public virtual BdoSystem ParentSystem { get; set; }
}
但是,如果您想要两个单独的对象,则应在两个类中添加导航属性
public class BdoSubSystem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<BdoSystem> Systems { get; set; }
}
public class BdoSystem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<BdoSubSystem> SubSystems { get; set; }
}