1
データアクセスのためにLINQ to SQLを使用してカスタムロールプロバイダを作成したところです。プロバイダに書き込む必要がある関数の1つは、ユーザーをロールから削除することです。LINQ to SQL多対多の比較クエリ
public void RemoveUsersFromRoles(string[] usernames, string[] rolenames);
ここで1つのアプローチがあります。よりよいがある場合
このアプローチは、効率的ほど遠いロールのリストは、私が希望
- リターンを知っていますLINQ to SQLのこの種の問題を処理する方法。
LINQ to SQLにループしてN個の選択を行う代わりに、比較のために文字列配列を取るselect文を作成する方法はありますか?私が上で説明したものより良いアプローチは、大いに感謝されるでしょう。関与
テーブル:
User (RecordID, Username) Role (RecordID, Rolename) UsersInRole (RoleID,UserID)
ありがとうございました!
あなたのコードを改善するだけです: 私は、* far *より読みやすいように、その質問に完全な単語を簡単に書きます:u => user、r => role、uir => usersInRole。 –
私はまだこのクエリを各ユーザーとロールごとにループする必要がありますか? – Lukasz
いいえ。このクエリは、メソッドの引数で指定されたuser + roleの任意の組み合わせに一致するすべてのUsersInRoleレコードを返します。関連するレコードを取得する(または削除する)ためにクエリを1回だけ実行します。 –