2016-02-19 49 views
0

我正嘗試在我的用戶和請求類之間創建多對多關係。遷移應該生成一箇中間表,但它在兩個表中都會生成一對一。多對多代碼首先不在EF6中生成中間表

public class ApplicationUser : IdentityUser 
{ 
    ... 

    public virtual ICollection<Request> Requests{ get; set; } 
} 

public partial class Request 
{ 
    ... 

    public virtual ICollection<ApplicationUser> Users{ get; set; } 
} 

public partial class _12 : DbMigration 
{ 
    public override void Up() 
    { 
     AddColumn("dbo.AspNetUsers", "Request_Id", c => c.Int()); 
     AddColumn("dbo.Requests", "ApplicationUser_Id", c => c.String(maxLength: 128)); 
     CreateIndex("dbo.AspNetUsers", "Request_Id"); 
     CreateIndex("dbo.Requests", "ApplicationUser_Id"); 
     AddForeignKey("dbo.AspNetUsers", "Request_Id", "dbo.Requests", "Id"); 
     AddForeignKey("dbo.Requests", "ApplicationUser_Id", "dbo.AspNetUsers", "Id"); 
    } 
... 
} 

回答

0

明白了他流利的API的工作。

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

    modelBuilder.Entity<ApplicationUser>() 
       .HasMany(t => t.Requests) 
       .WithMany(t => t.Users);  
} 

給我這個

public partial class _12 : DbMigration 
{ 
    public override void Up() 
    { 
     CreateTable(
      "dbo.ApplicationUserRequests", 
      c => new 
       { 
        ApplicationUser_Id = c.String(nullable: false, maxLength: 128), 
        Request_Id = c.Int(nullable: false), 
       }) 
      .PrimaryKey(t => new { t.ApplicationUser_Id, t.Request_Id }) 
      .ForeignKey("dbo.AspNetUsers", t => t.ApplicationUser_Id, cascadeDelete: true) 
      .ForeignKey("dbo.Requests", t => t.Request_Id, cascadeDelete: true) 
      .Index(t => t.ApplicationUser_Id) 
      .Index(t => t.Request_Id); 

    } 
    ... 
} 

我沒有用流利的API爲我加了表自己,但用戶表是不同的。