实体框架代码首先 - 违反PRIMARY KEY约束

时间:2015-09-19 07:10:48

标签: c# asp.net-mvc entity-framework tsql ef-code-first

我有一个ASP.NET应用程序,其代码首先是实体框架方法。在我的一个模型(产品)中,我有以下代码:

[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public Guid OwnerId { get; set; }
public DateTime AddedDate { get; set; }
public bool IsConfirmet { get; set; }

[ForeignKey("OwnerId")]
public virtual Owner Owner { get; set; }

所有者类看起来像这样:

[Key]
public Guid UserId { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Address { get; set; }

[NotMapped]
public string Login { get; set; }
[NotMapped]
public string Password { get; set; }

后来当我尝试添加产品时:

public static int AddProduct(Product product)
{
    db.Products.Add(product);
    db.SaveChanges();
}

我收到了一条消息:

违反PRIMARY KEY约束'PK_dbo.Owners'。无法在对象'dbo.Owners'中插入重复键。重复键值为([...])。声明已经终止。

当我尝试删除产品时,我也收到此消息。

public static void RemoveProducts()
{
    List<Product> products = db.Products.Where(p => p.IsConfirmed == false).ToList();

    foreach (Product product in products)
    {
        if ((DateTime.Now - product.AddedDate).TotalMinutes > 10)
        {
            db.Products.Remove(product);
            db.SaveChanges();
        }
    }
}

此错误发生在db.SaveChanges()行。这对我来说很奇怪因为我认为它涉及添加操作。

0 个答案:

没有答案