コントローラーとビューからテーブルにアクセスする方法を知りたいと思います。
私のモデルはそのように見えます
public class UserProfiles
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public virtual ICollection<Roles> Roles { get; set; } //many to many
public virtual ICollection<dbClient> Clients { get; set; } // many to many
}
私の他のモデルは次のようになります
public class Roles
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[Required(ErrorMessage = "Required")]
public int RoleID { get; set; }
[Required(ErrorMessage = "Required")]
public string RoleName { get; set; }
public virtual ICollection<UserProfiles> UserProfiles { get; set; } //many to many
}
PMC (パッケージ マネージャー コンソール) から移行と更新を実行すると、両方のテーブルの ID 値を保持する 3 番目のテーブルにキーを持つ 2 つのテーブルが作成されます。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<OilNGasWeb.Models.Roles>()
.HasMany<OilNGasWeb.Models.UserProfiles>(r => r.UserProfiles)
.WithMany(u => u.Roles)
.Map(m =>
{
m.ToTable("Webpages_UsersInRoles");
m.MapLeftKey("RoleId");
m.MapRightKey("UserId");
});
}
最近私は試しました:
var result=(from u in db.UserProfiles
from r in u.Roles **1.**
where r.RoleID.Contains(u.UserId) **2.**
select u);
しかし、どういうわけかWebpages_UsersInRolesを拾っていません...(テーブルを作成した後、そのためのクラスを作成する必要があります???? )
なぜ私はそれにリンクできないのですか?
@Andrew Countsの2枚の写真
m2mテーブルを取得するために私が従った手順
その後、次の例を使用してみました:
これらすべてを読みましたが、コントローラーレベルからm2mを使用する方法はわかりませんか? ビューに値を渡します。
助けてくれてありがとう