1

私は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つしかないことを意味します。 "。

助けてくれてありがとう。

4

1 に答える 1