我试图使用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/

10-11 23:40