0

asp.net メンバーシップ プロバイダーで最初にコーディングしようとしています。コードが最初にテーブルを作成すると、すべてのテーブルとブリッジ テーブルへの適切な関係が生成されますが、AspNet_User(one) から Aspnet_Role(many) への追加の関係も作成されます。なぜこれを行うのか知っていますか?ユーザーとロール テーブルの間に関係があってはなりません。

public class Aspnet_Role
{
    public Aspnet_Role()
    {
        Aspnet_Users = new HashSet<Aspnet_Users>();
    }
    [Key]
    public Guid RoleId { get; set; }
    public string RoleName { get; set; }
    public string LoweredRoleName { get; set; }
    public string Description { get; set; }

    public virtual ICollection<Aspnet_Users> Aspnet_Users { get; set; }
}
public class Aspnet_Users
{
    public Aspnet_Users()
    {
        Aspnet_Roles = new HashSet<Aspnet_Role>();
    }
    [Key]
    public Guid UserId { get; set; }
    public string UserName { get; set; }
    public string LoweredUserName { get; set; }
    public string MobileAlias { get; set; }
    public bool IsAnonymous { get; set; }
    public DateTime LastActivityDate { get; set; }

    public virtual Aspnet_Membership Aspnet_Membership { get; set; }
    public virtual ICollection<Aspnet_Role> Aspnet_Roles { get; set; }
}
public class StagingContext : DbContext
{
    public DbSet<Aspnet_Role> Aspnet_Roles { get; set; }
    public DbSet<Aspnet_Users> Aspnet_Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)

    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<Aspnet_Users>()
            .HasMany(r => r.Aspnet_Roles)
            .WithMany()
            .Map(m => m.ToTable("aspnet_UsersInRoles")
                .MapRightKey("RoleId")
                .MapLeftKey("UserId"));

    }
}
4

1 に答える 1

0

WithMany拡張機能にナビゲーションプロパティを追加しました。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{
    base.OnModelCreating(modelBuilder);

     modelBuilder.Entity<Aspnet_Users>()
         .HasMany(r => r.Aspnet_Roles)
         .WithMany(u => u.Aspnet_Users)
         .Map(m => m.ToTable("aspnet_UsersInRoles")
         .MapRightKey("RoleId")
          .MapLeftKey("UserId")); 

}
于 2013-02-20T20:09:54.250 に答える