0

データベースには、User、Group、および UserID と GroupId を含むルックアップ テーブル UserGroup の 3 つのテーブルがあります。

model.edmx を作成すると、var users = context.User var groups = context.Group を実行できますが、context.UserGroup のオブジェクトは作成されません。

グループ内のすべてのユーザーと、ユーザーが属するすべてのグループを取得するための構文は何ですか?

var results = from groups in db.Groups.Where(t => t.Users(u => u.UserID ==1))
select groups;
4

2 に答える 2

1

適切なキーが設定されている場合、EF はジャンクション テーブルを隠し、テーブル間の接続を確立するためのナビゲーション プロパティを作成します。

ユーザーが属するすべてのグループを取得するには:

var groupResults = db.Groups.Where(g => g.Users.Select(u => g.UserId).Contains(userId));

すべてのユーザーを取得するには:

var userResults = db.Users.Where(u => u.Groups.Select(g => g.GroupId).Contains(groupId));
于 2012-10-19T12:31:42.553 に答える
0

ジャンクション テーブルは作成されません。2 つのナビゲーション コレクション プロパティを取得します。ユーザー エンティティ内のグループとグループ エンティティ内のユーザー。

グループからすべてのユーザーを取得するには:

var usersInGroup = context.Groups.Where(g => g.ID == groupId).SelectMany(g => g.Users);

ユーザーが属するすべてのグループを取得するには:

var groupsOfUser = context.Users.Where(u => u.ID == userId).SelectMany(u => u.Groups);
于 2012-10-19T14:08:01.600 に答える