1

SQL Server でビューを作成し、それをGridView自分の.aspxページで使用する必要があります。ビューは、Entity Framework を介してアプリケーションにマップされます。

これが私の例です:

SELECT User.UserName, User.UserId
FROM User 
WHERE NOT EXISTS (SELECT UsersInRoles.RoleId FROM UsersInRoles 
WHERE UsersInRoles.UserId = User.UserId AND UsersInRoles.RoleId = 'AdminRole')

Userとtableの関係UsersInRolesは 1 対多です。

AdminRoleASP.NET アプリケーションで値を渡すことができる必要があります。

ビューでパラメータを使用できません (つまり、使用@Roleは許可されていません)。

にバインドできるのはビューとテーブルのみであるGridViewため、ストアド プロシージャ (パラメータがオプションになる可能性がある場合) はここでは適していません。

LEFT OUTER JOINの代わりに多分を使用する回避策はありNOT EXISTSますか? このようにJOINして、テーブルに を置いて、アプリケーションの Entity FrameworkUsersInRolesからフィールドをマップし、そこに条件を追加することができます (節を使用)。UsersInRolesEntityDataSource.Where

4

2 に答える 2

1

Exists には、LINQ の Any 拡張メソッドを使用します。存在しない場合は、!Any を使用します。

var query = from user in User
            where !user.UsersInRoles.Any(role => role.RoleId == 'AdminRole')
            select new {user.UserName, user.UserId};
于 2011-08-25T12:44:37.457 に答える
0

私は EF の初心者ですが、EF でストアド プロシージャ (または関数) を使用できることは知っています。

これを読んでみる

于 2011-08-25T11:03:59.390 に答える