0

我在 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将相应更改。

谢谢你。

4

1 回答 1

1

改为使用数据注释。在类中添加一个 Identity 字段PlaylistSong

    public class PlayList
    {
        [Key]
        public int ID { get; set; }
        public string Name { get; set; }
        public DateTime Date { get; set; }

        public virtual IList<PlayListSong> PlaylistSongs { get; set; }
    }

    public class PlayListSong
    {
        [Key]
        public int ID { get; set; }
        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; }
    }

    public class Song
    {
        [Key]
        public int ID { 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<PlayListSong> PlaylistSongs { get; set; }
       // public IList<Album> Albums { get; set; }
    }
于 2012-12-01T21:49:50.623 回答