1

私は .NET 3.5 で Entity Framework を使用していますが、次の設計をトラバースするために Linq を作成する方法を一生理解できません。

基本的に、ユーザーが特定の EntityType に対するアクセス許可 (EntityAction) を持っているかどうかを把握しようとしています。現在、ユーザーと役割は Active Directory で維持されていますが、システムはルックアップを実行して、ユーザーが属する役割/グループを見つけることができます。

次のデータがあるとします。

エンティティ タイプ

EntityTypeId: 1

名前: 実体1

ユーザー

ユーザー ID: 1

口座名義:アンデス

役割

役割 ID: 1

アカウント名: MyRole

EntityAction

EntityActionId: 1

お名前: 何とかして

RoleEntityActionAssociation

(Role と EntityAction の関連付け)

EntityActionId: 1

役割 ID: 1

リストに(Active Directoryから)ユーザーのグループ名を保存しています:

List<string> groupNames = new List<string>();

質問

ただし、Linq を組み合わせて、ユーザー (またはリスト groupNames で割り当てられたロールの 1 つ) が EntityType を指定された特定の EntityAction に関連付けられているかどうかを調べようとしています。

// get reference to the user
User user = context.Users.Where(x => x.AccountName == "Andez").FirstOrDefault();

// get reference to the entity type we want to query
EntityType et = context.EntityTypes.Where(x => x.Name == "Entity One").FirstOrDefault();

// get list of all entity actions for the user
var result = from ea in et.EntityActions
             where ea.EntityActionId == 1 && (ea.Users.Contains(user) || ea.Roles.Count(r => groupNames.Contains(r.AccountName)) > 0)
             select ea;

もちろん、私のクエリは上記では機能しません - 結果は返されません (result.ToList().Count == 0)

これについての指針が必要です。

ありがとう

EFデザイン

4

1 に答える 1