C# 如何与多-多建立自我参照(自反)关系?
我有以下课程:C# 如何与多-多建立自我参照(自反)关系?,c#,entity-framework-core,C#,Entity Framework Core,我有以下课程: MenuComponent MenuContainer 菜单容器可以看作是菜单。菜单有很多元素。但是一个菜单可以包含在另一个菜单中 我想坚持这一点,但我不知道怎样做才是最好的: namespace menu_builder_rbac { public abstract class MenuComponent { [Key] public int MenuComponentId { get; set; } public
MenuComponent
MenuContainer
菜单容器可以看作是菜单。菜单有很多元素。但是一个菜单可以包含在另一个菜单中
我想坚持这一点,但我不知道怎样做才是最好的:
namespace menu_builder_rbac {
public abstract class MenuComponent {
[Key]
public int MenuComponentId { get; set; }
public string DisplayName { get; set; }
public string Name { get; set; }
public string HtmlId { get; set; }
public string HtmlCssClass { get; set; }
public string Url { get; set; }
public string IconUrl { get; set; }
public bool Equals(MenuComponent menuComponent) {
return (this.MenuComponentId == menuComponent.MenuComponentId) || (this.Name == menuComponent.Name);
}
}
public class MenuContainer : MenuComponent {
public ICollection<MenuComponent> MenuComponentMenuContainer { get; set; }
}
}
名称空间菜单\u生成器\u rbac{
公共抽象类MenuComponent{
[关键]
public int MenuComponentId{get;set;}
公共字符串DisplayName{get;set;}
公共字符串名称{get;set;}
公共字符串HtmlId{get;set;}
公共字符串HTMLCSCLASS{get;set;}
公共字符串Url{get;set;}
公共字符串IconUrl{get;set;}
公共布尔等于(MenuComponent MenuComponent){
返回(this.MenuComponentId==menuComponent.MenuComponentId)| |(this.Name==menuComponent.Name);
}
}
公共类菜单容器:菜单组件{
公共ICollection菜单组件菜单容器{get;set;}
}
}
菜单本质上是树。您的MenuComponent
将相当于一个节点。每个节点都可以将其他MenuComponent
s作为子节点。我并不认为有必要使用MenuContainer
,除非您想将其用作rootMenuComponent
s的顶级存储
因此,您的类将如下所示:
public class MenuContainer
{
public ICollection<MenuComponent> Menus { get; }
}
public class MenuComponent
{
....
public ICollection<MenuComponent> ChildMenus { get; }
}
公共类菜单容器
{
公共ICollection菜单{get;}
}
公共类菜单组件
{
....
公共ICollection子菜单{get;}
}
可能的重复: