我试图使用ef addorupdate将facebook图形搜索api中的数据插入到数据库中。奇怪的是发生了以下异常。
违反主键约束“pk-dbo.posts”。无法在对象“dbo.posts”中插入重复键。重复的键值是(100000544976851_913461492015341)。
声明已终止。
代码非常简单:
H2GO db2 = new H2GO();
if (obj != null)
{
ICollection<Post> posts = new Collection<Post>();
foreach (var data in obj.data)
{
var post = new Post
{
ID = data.id,
Tag = tag,
Content = data.message,
User = data.from.name,
Type = 2,
TagDate = Convert.ToDateTime(data.created_time),
};
db2.Posts.AddOrUpdate(p => p.ID, post);
}
db2.SaveChanges();
最佳答案
我知道这已经有一段时间了,但是当我错误地标记了我的模型,并且有一个由两部分组成的密钥,而数据库只有一部分的密钥时,我确实发生了这种情况。所以我的模特说:
/// <summary>
/// Gets or sets the user identifier.
/// </summary>
/// <value>
/// The user identifier.
/// </value>
[Key]
public Guid UserId { get; set; }
/// <summary>
/// Gets or sets the plan identifier.
/// </summary>
/// <value>
/// The plan identifier.
/// </value>
[Key]
public string PlanId { get; set; }
但是,用户一次只能有一个计划,所以数据库说:
这对我来说是个愚蠢的错误,我很快就发现了,但是…希望这能帮到别人。
关于c# - Entity Framework AddOrUpdate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26329990/