我有两个班级Song
和Album
。 Album
嵌套了歌曲集。但在EF中我必须建立关系。但Song
可以是单身,也可以不是Album
。所以我想在数据库中创建类似的东西。
public class Song:IEntity
{
public Song()
{
Id = Guid.NewGuid().ToString();
}
public string Id { get; set; }
public string Artist { get; set; }
public string Title { get; set; }
}
public class Album:IEntity
{
public Album()
{
Id = Guid.NewGuid().ToString();
}
public string Id { get; set; }
public string Artist { get; set; }
public string Title { get; set; }
public DateTime Year { get; set; }
public virtual ICollection<Song> Songs { get; set; }
}
答案 0 :(得分:0)
好的,什么不起作用?你的模特看起来很好,除了剥夺你自己检查歌曲是否属于任何专辑的能力。
许多nad 1 - 许多关系被转换为单独的表,直到您在某些实例之间添加关系而不会丢失任何内存。是否有任何理由不向public Album Album {get;set;}
添加:Album
,您知道的是null
吗?
答案 1 :(得分:0)
将您的Song
课程更新为:
public class Song:IEntity
{
public Song()
{
Id = Guid.NewGuid().ToString();
}
public virtual Album Album { get; set; }. //add this line
public string Id { get; set; }
public string Artist { get; set; }
public string Title { get; set; }
}
在DbContext
中定义以下映射:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Song>()
.HasOptional(c => c.Album)
.WithMany(t => t.Songs);
}