コントローラーでテーブルを結合して結果を取得する方法がわかりません。'Groups' 'Users' 'GroupUser' (ブリッジ テーブル) の 3 つのテーブルがあります。
public class Group
{
[Key]
public int GroupID { get; set; }
public string Group_Name { get; set; }
public ICollection<User> Users { get; set; }
}
public class User
{
[Key]
public int UserID { get; set; }
public string User_Name { get; set; }
public ICollection<Group> Groups { get; set; }
}
この EFContext クラスもあります
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Group>()
.HasMany(g => g.Users)
.WithMany(u => u.Groups)
.Map(m =>
{
m.MapLeftKey("UserID");
m.MapRightKey("GroupID");
m.ToTable("GroupUSer");
});
GroupUser クラス (GroupUser ブリッジ テーブルを表すため) も作成する必要がありますか?
次に、3 つのテーブルを結合してグループとユーザーのリストを取得するときに、どのように結果を取得しますか?
GroupViewModel model = new GroupViewModel
{
Groups = .... // this should be a linq statement that get results
that contains all groups and users
};
等しいSQL文は次のようになります
select *
from Group g
join GroupUser gu on g.GroupID=gu.GroupID
join User u on u.UserID=gu.UserID