MVC4にクラスとクラスがありますPlaylist
。Song
ルール:
- 曲は0個以上のプレイリストに含めることができます。
- プレイリストには0曲以上を含めることができます。
だから私がしたことはこれを作成することでした:
public class Playlist
{
public int PlaylistID { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public virtual IList<PlaylistSongs> PlaylistSongs { get; set; }
}
public class Song
{
public int SongID { get; set; }
public string Title { get; set; }
public string SongArtURL { get; set; }
public virtual Artist Artist { get; set; }
public virtual Genre Genre { get; set; }
public IList<PlaylistSongs> PlaylistSongs { get; set; }
public IList<Album> Albums { get; set; }
}
public class PlaylistSongs
{
public int PlaylistID { get; set; }
public int SongID { get; set; }
public virtual Playlist Playlist { get; set; }
public virtual Song Song { get; set; }
public int NumberVotes { get; set; }
}
そして、私もそのようにオーバーライドOnModelCreating
しました:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PlaylistSongs>()
.HasKey(cp => new { cp.SongID, cp.PlaylistID });
modelBuilder.Entity<Playlist>()
.HasMany(c => c.PlaylistSongs)
.WithRequired()
.HasForeignKey(cp => cp.SongID);
modelBuilder.Entity<Song>()
.HasMany(p => p.PlaylistSongs)
.WithRequired()
.HasForeignKey(cp => cp.PlaylistID);
}
しかし、問題。Song
最初は何にも接続されていない(正常に機能する)を作成してPlaylist
から、その曲をプレイリストに追加したいとします。プレイリストには曲のリストが含まれていませんが、代わりにプレイリストの曲のリストが含まれているので、どうすればよいですか?
私が欲しいのは:
- 曲のリストを作成する(独立して)
- その曲のリストをプレイリストに追加します
- 次に、Code First Migrations Seedメソッドは、PlaylistSongsテーブルに必要な関連付けを自動的に作成します。
- 次に、特定のプレイリストの曲に投票してもらうことができます。
- フィールド
NumberVotes
はそれに応じて変更されます。
ありがとうございました。