如何在EF6中更新实体的子列表

时间:2016-12-09 10:11:57

标签: c# entity-framework ef-code-first entity-framework-6

我有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无法使用相同的键跟踪多个对象。

0 个答案:

没有答案