C# 使用Linq to Entities获取用户通过自联接拥有的角色列表
我正在尝试构建一个动态菜单,它使用Identity 2.0角色定义用户应该看到的菜单项。我对C#很陌生,需要一些帮助 就我所做的而言,我认为角色是一个菜单项,用户可以看到或不看到它,这取决于分配给他们的角色。我有两个级别的菜单项-父菜单项(如“报告”和子菜单项(如“订单报告”、“收货报告”等) 因此,我的C# 使用Linq to Entities获取用户通过自联接拥有的角色列表,c#,sql,linq-to-entities,asp.net-mvc-5,asp.net-identity,C#,Sql,Linq To Entities,Asp.net Mvc 5,Asp.net Identity,我正在尝试构建一个动态菜单,它使用Identity 2.0角色定义用户应该看到的菜单项。我对C#很陌生,需要一些帮助 就我所做的而言,我认为角色是一个菜单项,用户可以看到或不看到它,这取决于分配给他们的角色。我有两个级别的菜单项-父菜单项(如“报告”和子菜单项(如“订单报告”、“收货报告”等) 因此,我的ApplicationRole类如下所示: public string Description { get; set; } public string MenuTitle {get;set;}
ApplicationRole
类如下所示:
public string Description { get; set; }
public string MenuTitle {get;set;}
public string MenuIcon { get; set; }
public string ControllerName { get; set; }
public string ActionName { get; set; }
public virtual ApplicationRole ParentRole { get; set; }
我将只针对用户存储角色,其中ParentRole不为null。我想知道如何为登录用户检索此角色列表并呈现菜单
所以,逻辑是这样的:
ParentRole
获取父角色的不同列表(菜单的顶层)public class NavigationViewModel
{
public int MenuId { get; set; }
public string MenuName { get; set; }
public string ControllerName { get; set; }
public string ActionName { get; set; }
public string MenuIcon { get; set; }
public IEnumerable<NavigationViewModel> ChildMenuItems { get; set; }
}
公共类导航视图模型
{
public int MenuId{get;set;}
公共字符串菜单名{get;set;}
公共字符串控制器名称{get;set;}
公共字符串ActionName{get;set;}
公共字符串MenuIcon{get;set;}
公共IEnumerable ChildMenuItems{get;set;}
}
任何建议都很好。我的建议是向项目中添加一个
ADO.NET实体数据模型
,并从数据库中添加要查询的表。然后创建一个.edmx
文件,其中包含表及其关系,您可以在代码中访问它们(一个DbContext
是用您的数据库名创建的,就像YouDBNameEntities
)
现在已连接到数据库,请创建一个新上下文:
YourDBNameEntities上下文=新建YourDBNameEntities()
之后,您可以在添加的表上进行联接,在您的情况下,可以进行自联接:
var Query=context.AddedTable.Join(context.AddedTable,…)
或
var Query=来自context.AddedTable中的yourClassName1
join yourClassName2 in context.AddedTable on yourClass1.ID equals yourClass2.ID
where !yourClassName1.ParentRole.equals(null)
select new { ParentRole = yourClassName1.ParentRole }