我有2个具有多对多关系的实体。
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker
didPickMediaItems: (MPMediaItemCollection *) collection {
MPMediaItem *item = [[collection items] objectAtIndex:0];
NSURL *url = [item valueForProperty:MPMediaItemPropertyAssetURL];
[self dismissModalViewControllerAnimated: YES];
// Play the item using MPMusicPlayer
MPMusicPlayerController* appMusicPlayer = [MPMusicPlayerController applicationMusicPlayer];
[appMusicPlayer setQueueWithItemCollection:collection];
[appMusicPlayer play];
// Play the item using AVPlayer
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:url];
AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
[player play];
}
这是两个实体之间多对多映射的定义,
public class Student{
public int Id { get; set; }
public virtual ICollection<Subject> Subjects { get; set; }
}
public class Subject
{
public int Id { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
所有主题都已预定义且已在数据库中。向学生添加科目是直截了当的。
在此,我想添加或删除每个学生的科目(更新学生和现有科目之间的关系)。我有更新时应分配学生的科目ID列表。
如何更新学生的科目列表?
更新
这就是我尝试过的。
modelBuilder.Entity<Student>()
.HasMany<Subject>(s => s.Subjects)
.WithMany(c => c.Students)
.Map(cs =>
{
cs.ToTable("SubjectsStudents");
});
获取异常: ObjectStateManager中已存在具有相同密钥的对象。 ObjectStateManager无法使用相同的键跟踪多个对象。