我有一个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()行。这对我来说很奇怪因为我认为它涉及添加操作。