2017-04-06 17 views
0

に参加するために列を追加します。私はWeb APIを構築しています。私のモデルプランでは、ユーザー(アイデンティティフレームワーク)と、多対多の関係を持つLocationクラスがあります。 EF6自動でテーブルLocationUserが作成されましたが、このテーブルをいくつかの余分な列で拡張したいと思います。しかし、それを行う最良の方法は何ですか。もちろんは、私はデータベースの移行で最初のEF6コードで働いていると私は初心者だテーブルEF6

私はいくつかの解決策を探してきましたが、私は行くための最良の方法は何かわかりません。

私は最後のマイグレーションアップ方法を編集し、私が欲しいの列を追加しますが、私はこれが最善の方法であるかはわからないことができます。私の意見では、新しいモデルクラスを手動で作成することも可能です。

誰もが最善の方法は何かを教え、なぜ手の込んだてもらえますか?

User.cs

public class User : IdentityUser 
{ 
    public virtual ICollection<Location> Locations { get; set; } 
    // Other code for Identity Framework 
} 

Location.cs

public class Location 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public double Lat { get; set; } 
    public double Lng { get; set; } 

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

答えて

1

あなたは以下のような独自のUserLocationクラスを作成することができます。

public class UserLocation 
{ 
    public int Id { get; set; } 
    public Location Location { get; set; } 
    public User User { get; set; } 
    //Extra fields you want can go here 
} 

は、その後、あなたUserLocationクラスで、あなたのUserLocationクラスを使用するためのリンクを変更します。

例:

public class User : IdentityUser 
{ 
    public virtual ICollection<UserLocation> Locations { get; set; } 
    // Other code for Identity Framework 
} 

も多く、多く、以下は、あなたの答えのためにUser

public class UserConfiguration : EntityTypeConfiguration<User> 
{ 
    public UserConfiguration() 
    { 
     HasKey(x => x.Id); 
     HasMany(x => x.Locations); 
    } 
} 
2

私の意見では最良の方法は、そのコンテキストでfluet APIを使用することで、より良い理解のためのチュートリアルに従います。

サンプル:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 

    modelBuilder.Entity<User>() 
       .HasMany<Location>(u => u.Locations) 
       .WithMany(l => l.Students) 
       .Map(ul => 
         { 
          cs.MapLeftKey("UserId"); 
          cs.MapRightKey("LocationId"); 
          cs.ToTable("UserLocation"); 
         }); 

} 

チュートリアル:アクションの実際の歴史を損なわないように、私は常に新しいマイグレーションを作成するモデルへの更新については http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx

+0

感謝のための1つだろう強制するために、あなたのクラスにEntityTypeConfigurationsを追加することができます。 UserLocationに余分な列を追加するにはどうすればよいですか? – EJW

関連する問題