2011-03-12 8 views
1

私は、生成されたメンバーシップとロールのテーブルからすべてのユーザーとその役割を取得しようとしています、と私はこの思い付いた:Linq2Sqlですべてのユーザーとその役割(メンバーシップと役割)を取得するには、正しいクエリですか?

var query = from a in aspnet_Users 
      select new { a.UserName, a.UserId } into b 
      join c in aspnet_UsersInRoles on b.UserId equals c.UserId 
      join d in aspnet_Roles on c.RoleId equals d.RoleId 
      group d.RoleName by b; 

はこの良いですかこれを行うには良い方法はありますか?

答えて

0

はいあります。基本的にはSQLクエリをLINQに変換していますが、LINQではプロパティ(つまりuser.Role)を移動して自動結合を実行できることを忘れています。

LinqにSQLを伝えてユーザーの役割を伝える(または他の方法:役割を持たせて関連ユーザーを含める)ことは簡単です。遅延ロードなしでこれを行う方法を確認するリンクがあります:http://www.singingeels.com/Blogs/Nullable/2008/10/27/EntityFramework_Include_Equivalent_in_LINQ_to_SQL.aspx

乾杯

+0

こんにちは、 に直行した方がよいかもしれませんので、私は、生成されたSQLの種類をチェックしていないはい、私は:-)それについて忘れてしまいましたしかし、私は気づいた通りにユーザーからロールへ行くことはできません。ユーザーからは私だけがユーザーに行くことができます。リンクありがとう。私は怠惰な読み込みを維持したいと思います... – TheDude

3

まあ、データベースを照会することで直接アプローチを使用するとうまくいきます。 メンバーシップとメンバーシップのすべての機能を完全にバイパスしています。

理由だけではなく、メンバーシップを使用していない:

var roles = from MembershipUser u in Membership.GetAllUsers() 
      select new {user = u, 
      roles = Roles.GetRolesForUser(u.UserName)}; 

この方法は、将来的には、データベースの構造は、あなたが実装を知っている必要はありませんようにコードがまだ動作します変更した場合。

あなたはどう思いますか?

PS:あなたはスーパーパフォーマンスを必要とする場合、まだDB

関連する問題