我是 Linq to Entities 的新手,不知道如何进行查询。
我的模型是:
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<AppFunction> AppFunctions { get; set; }
}
public class AppFunction
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; private set; }
public ICollection<Role> Roles { get; set; }
}
所以我有角色和应用功能。每个角色可以关联很多应用功能,每个应用功能可以关联很多角色。因此,角色和应用程序功能之间只是多对多。
还有一个细微差别:如果AppFunction.ParentId == null
- 我将其视为一个类别。
否则,它是一个具体的功能,属于其中一个类别。
我不确定这是否是一个很好的架构示例,但目前在我的应用程序中是如此。
我想进行这样的查询,它将返回下一个 ViewModel 的数据:
public class RoleCategoryViewModel
{
public string RoleName { get; set; }
public string CategoryName { get; set; }
public int Count { get; set; }
}
为了清楚起见:
Role1 Role 2
Category 1 (3/7) (0/7)
Category 2 (1/2) (2/2)
Category 3 (3/5) (4/5)
这是我想在页面上向用户展示的表格。它是角色和功能类别的矩阵。在角色 X 和类别 Y 的交汇处,有大量来自类别 Y 的与角色 X 相关联的应用功能。
例如,“角色 1”和“类别 1”的交点处的 (3/7) 表示“类别 1”总共包含 7 个“子功能”,并且“类别 1”中只有 3 个功能与“角色 1”相关联”。
非常感谢您的帮助。