如何实现两个实体之间的某种关系

本文关键字:之间 关系 实体 何实现 实现 两个 | 更新日期: 2023-09-27 17:54:52

我在asp.net MVC中编写一个应用程序,并希望使用实体框架为我的数据库制作模型。

我想创建两个实体模型,歌曲和播放列表。

一个播放列表自然可以包含许多歌曲,我想在这种情况下我想包含

public List<Song> Songs { get; set; }

但是,一首歌曲可以在多个播放列表中,那么我应该如何编写歌曲实体?还

public List<Playlist> Playlists { get; set; }

?

在我的应用程序中,我希望用户能够将歌曲添加到特定的播放列表。我唯一想到的是歌曲旁边的一个小下拉菜单,它列出了所有不包含特定歌曲的播放列表,所以我想我需要song实体对包含它的所有播放列表有某种引用。

如何实现两个实体之间的某种关系

这篇关于如何配置多对多关系的文章应该能为您提供一些答案。

您将需要在ModelCreation期间修改模型,如下所示:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Entity<Song>()
               .HasMany<PlayList>(s => s.Playlists)
               .WithMany(p => p.Songs)
               .Map(cs =>
                        {
                            cs.MapLeftKey("PlayListID");
                            cs.MapRightKey("SongId");
                            cs.ToTable("PlayListSong");
                        });
}

您也可以通过创建自己的类来创建它:

public class PlayListSong
{
    public int PlayListID { get; set; }
    public int SongID { get; set; }
}

在数据库术语中,这被称为"交集标识"表。