如何实现两个实体之间的某种关系?
How to implement certain relation between two entities?
我正在 asp.net MVC 中编写应用程序,并希望使用 entity framework 为我的数据库制作模型。
我想做两个实体模型,歌曲和播放列表。
一个播放列表自然可以包含很多歌曲,我想那样的话我想包含
public List<Song> Songs { get; set; }
但是,一首歌可以在多个播放列表中,那么歌曲实体应该怎么写呢?
还有
public List<Playlist> Playlists { get; set; }
?
在我的应用程序中,我希望用户能够将歌曲添加到特定的播放列表。我唯一想到的是一首歌曲旁边的一个小下拉菜单,其中列出了所有不包含特定歌曲的播放列表,所以我想我需要歌曲实体对包含它的所有播放列表有某种引用。
这篇关于如何配置 Many-To-Many 关系的文章应该能为您提供一些答案。
您将需要在 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");
});
}
您也可以通过创建自己的 class 来创建它:
public class PlayListSong
{
public int PlayListID { get; set; }
public int SongID { get; set; }
}
在数据库术语中,这称为 "Intersection Identity" table。
我正在 asp.net MVC 中编写应用程序,并希望使用 entity framework 为我的数据库制作模型。
我想做两个实体模型,歌曲和播放列表。
一个播放列表自然可以包含很多歌曲,我想那样的话我想包含
public List<Song> Songs { get; set; }
但是,一首歌可以在多个播放列表中,那么歌曲实体应该怎么写呢? 还有
public List<Playlist> Playlists { get; set; }
?
在我的应用程序中,我希望用户能够将歌曲添加到特定的播放列表。我唯一想到的是一首歌曲旁边的一个小下拉菜单,其中列出了所有不包含特定歌曲的播放列表,所以我想我需要歌曲实体对包含它的所有播放列表有某种引用。
这篇关于如何配置 Many-To-Many 关系的文章应该能为您提供一些答案。
您将需要在 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");
});
}
您也可以通过创建自己的 class 来创建它:
public class PlayListSong
{
public int PlayListID { get; set; }
public int SongID { get; set; }
}
在数据库术语中,这称为 "Intersection Identity" table。