实体框架AddOrUpdate

时间:2014-10-12 21:07:46

标签: c# asp.net database facebook entity-framework

我尝试使用EF AddOrUpdate从Facebook Graph搜索API将数据插入数据库。发生以下异常很奇怪。

  

违反PRIMARY KEY约束'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();

1 个答案:

答案 0 :(得分:0)

我看到它已经有一段时间了,但是当我错误地标记我的模型并且有两部分密钥并且数据库只有一部分密钥时,我实际上发生了这种情况。所以我的模特说了这个:

    /// <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; }

但是,用户一次只能有一个计划,因此数据库说:

enter image description here

这是我的一个愚蠢的错误,我很快就找到了,但是...希望这可以帮助某人。