次の2つのテーブルから純粋な結合テーブルを作成しました。
ユーザー:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserID { get; set; }
public string UserName { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public virtual ICollection<CrRole> Roles { get; set; }
役割:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RoleID { get; set; }
public String RoleName { get; set; }
public virtual ICollection<CrUser> Users { get; set; }
UserRole結合テーブルを作成するためのFluentAPI:
modelBuilder.Entity<CrUser>()
.HasMany(c => c.Roles)
.WithMany(i => i.Users)
.Map(t => t.MapLeftKey("UserID")
.MapRightKey("RoleID")
.ToTable("CrUserRole"));
これは正常に機能し、UserID列とRoleID列を持つ正しいCrUserRoleテーブルを作成します。
ただし、この結合テーブルに対して単純なクエリを実行する方法を理解するのは非常に困難です。SQLでは、コマンドは次のようになります。
SELECT COUNT(*)
FROM UserRole ur
WHERE ur.RoleID = @RoleID
AND ur.UserID = @UserID
RoleエンティティまたはUserエンティティのいずれかのナビゲーションリンクを試しましたが、コンパイルを拒否するスパゲッティコードが大量に発生するようです:-(
誰かが私を正しい方向に向けてくれたらとてもありがたいです。いくつかのチュートリアルでも役に立ちますが、私が見つけたチュートリアルは、結合テーブルの作成までしか進んでおらず、CRUD操作は含まれていないようです。
ありがとう!