我有一个Movies
要传递给控制器的 json 对象。
{data : [{
Id: 12345,
Title: 'Movie1',
Year: 2010,
Character: [{
Name: 'Character1',
Person: { Id: 1, Name: 'Person1' }
},{
Name: 'Character2',
Person: { Id: 2, Name: 'Person2' }
}]
}]}
模型绑定工作正常,但我在通过 Entity Framework 5 将每个都插入数据库时遇到问题。当插入电影的Movie
每个时,我遇到主键违规。Person
我明白为什么会这样。添加新的时,有些人已经存在于数据库中,Movie
因此发生了违规。每个人的 ID 不是自动生成的。我正在使用从获取信息的 api 收到的 ID。
AMovie
与 具有多对多关系Person
,Character
是两者之间的桥梁。
public class Movie {
public int Id { get; set; }
public string Title { get; set; }
public int? Year { get; set; }
public virtual ICollection<Character> Characters { get; set; }
public Movie() {
Characters = new HashSet<Character>();
}
}
public class Character {
public string Name { get; set; }
public virtual Movie Movie { get; set; }
public virtual Person Person { get; set; }
}
public class Person {
public int Id { get;set; }
public string Name { get; set; }
public virtual ICollection<Character> Characters { get; set; }
public Person() {
Characters = new HashSet<Character>();
}
}
我的问题是......我知道我可以循环遍历每个Person
对象以及Attach()
它是否存在或Add()
不存在。实体框架可以自动处理插入一个新的Person
并在它已经存在的情况下忽略它吗?如果不是,此类问题的最佳实践是什么?