私はLinqtoEntitiesを初めて使用し、1つのクエリを作成する方法がわかりません。
私のモデルは次のとおりです。
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; }
}
だから私は役割とアプリケーション機能を持っています。各ロールには多くのアプリケーション機能を関連付けることができ、各アプリケーション関数には多くのロールを関連付けることができます。つまり、役割とアプリケーション機能の間は多対多です。
そして、1つのニュアンスがあります:もしAppFunction.ParentId == null
-私はカテゴリーとして扱います。
それ以外の場合は、カテゴリの1つに属する具体的な関数です。
それがアーキテクチャの良い例であるかどうかはわかりませんが、今のところ私のアプリではそうです。
そして、次の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の交差点には、ロールXに関連付けられたカテゴリYのアプリケーション機能が多数あります。
たとえば、「役割1」と「カテゴリ1」の交差点にある(3/7)は、「カテゴリ1」に7つの「サブ機能」が含まれ、「カテゴリ1」から「役割1」に関連付けられた機能が3つしかないことを意味します。 "。
助けてくれてありがとう。