【发布时间】:2019-07-03 07:05:10
【问题描述】:
我有几个简单的模型。一个 PlaylistEntry 模型和一个包含 PlaylistEntry 模型集合的播放列表模型。
播放列表:
public class Playlist
{
private ICollection<PlaylistEntry> playlistEntries;
public int PlaylistId { get; set; }
public string Name { get; set; }
public virtual ICollection<PlaylistEntry> PlaylistEntries
{
get => this.playlistEntries ?? (this.playlistEntries = new HashSet<PlaylistEntry>());
set => this.playlistEntries = value;
}
}
播放列表条目
public class PlaylistEntry
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PlaylistEntryId { get; set; }
public string FilePath { get; set; }
[ForeignKey("Playlist")]
public int PlaylistId { get; set; }
[Required]
public Playlist Playlist { get; set; }
}
当我将 PlaylistEntry 添加到处于分离状态的播放列表时,我希望在附加并保存更改时,对 PlaylistEntries 列表的更改也将被保存。他们不保存,列表为空。
这是我的代码:
var playlist = new Playlist { Name = "My first playlist" };
using (var context = new MusicPlayerContext(stringBuilder))
{
context.Playlists.Add(playlist);
context.SaveChanges();
}
playlist.PlaylistEntries.Add(new PlaylistEntry { FilePath = "lkdfj", PlaylistId = playlist.PlaylistId });
using (var context = new MusicPlayerContext(stringBuilder))
{
context.Playlists.Attach(playlist);
context.Entry(playlist).State = EntityState.Modified;
context.SaveChanges();
}
using (var context = new MusicPlayerContext(stringBuilder))
{
context.Playlists.Include(x => x.PlaylistEntries).ToList();
}
最后一次 ToList 调用返回我创建的播放列表,但其中的 PlaylistEntries 集合为空。
谁能发现我做错了什么或提出不同的解决方案?我已经花了大约 7 个小时来解决这个问题,但我终其一生都无法弄清楚。
【问题讨论】:
-
这只是一个猜测,但您检查过
Entry中的PlaylistEntry对象吗? -
我想知道您是否需要将这些对象附加到
context.PlaylistEntries,假设存在。
标签: c# database entity-framework entity-framework-6