0

私のサイトには多くの組み合わせを持つ 3 つのエンティティがあります。

次の階層を作成します。

  1. 各ユーザーには、UserRoles のコレクションがあります。
  2. 各 UserRole には PermissionRecords の固定コレクションがあります
  3. 各 PermissionRecord には、ユーザーごとに異なる PermissionRecordPrivileges のフィールドがあります。

ユーザーの権限を取得したいと思います (permissionRecord および UserRole コレクションの取得は非常に簡単です)。私が理解しているように、次のデータをマージするテーブルを作成する必要があります: UserId、PermissionRecordId、PermissionPrivilegesId (主キーを作成する 3 つの外部キー)

EF 5 (またはそれ以前) を使用してこれを行うにはどうすればよいですか?

コード:

public class BaseEntity
{
    public int Id { get; set; }
}
public class User:BaseEntity
{
   public virtual ICollection<UserRole> UserRoles{get;set;}
}

public class UserRole:BaseEntity
{
   public ICollection<PermissionRecord> PermissionRecords { get; set; }
}

public class PermissionRecord : BaseEntity
{
    public PermissionRecordPrivileges Privileges { get; set; }
}

public class PermissionRecordPrivileges : BaseEntity
{
    public bool Create { get; set; }

    public bool Read { get; set; }

    public bool Update { get; set; }

    public bool Delete { get; set; }

}
4

2 に答える 2

1

「テーブルを作成する」という用語は少し混乱します。テーブルはデータベース オブジェクトです。クライアント側のデータ構造を意味していると思います。の権限を収集するには、User次のようにします。

var privileges = (from u in context.Users
                 from ur in u.UserRoles
                 from pr in ur.PermissionRecords
                 where u.UserId = id
                 select ur.Privileges).Distinct();

ここで、の IDidを含む変数です。User

于 2012-12-03T15:10:24.700 に答える