是否可以在多对多关系中插入重复的行?这是我的班级:
public class EventPaintballBundle
{
[Key, Column(Order = 0)]
public int EventID { get; set; }
[Key, Column(Order = 1)]
public int PaintballBundleID { get; set; }
public virtual Event Event { get; set; }
public virtual PaintballBundle PaintballBundle { get; set; }
[Range(1, Int32.MaxValue)]
public int PersonCount { get; set; }
[Required]
public DateTime Data { get; set; }
}
我想插入这些值的第二行。差异在日期Date
和PersonCount
值
EventPaintballBundle xx = new EventPaintballBundle() { PaintballBundleID = 1, EventID = 155, Data = DateTime.Now, PersonCount = 5 };
dc.EventPaintballBundles.Add(xx);
dc.SaveChanges();
我想插入两个密钥的副本时收到错误。
{"违反PRIMARY KEY约束' PK_dbo.EventPaintballBundles'。 无法在对象' dbo.EventPaintballBundles'中插入重复键。该 重复键值为(155,1)。\ r \ n语句已经过 终止"}
如何解决这个问题?
答案 0 :(得分:0)
创建一个不是以下组合的主键:
public int EventID { get; set; }
public int PaintballBundleID { get; set; }
新的主要内容应该是唯一的,并且与实际存在的任何内容无关,这个密钥只会使您的模型在数据库方面工作明智。
这是一个经典的错误:认为你的主键应该代表存在的东西......没有
我很难学到它:即使我认为现有数据的某些组合将永远保持独特。我不使用它。我总是从我自己的设计中创建我的主键,而不代表任何真实的。