Asp.net 实体框架多对多允许重复

Asp.net 实体框架多对多允许重复,asp.net,asp.net-mvc,entity-framework,many-to-many,entity,Asp.net,Asp.net Mvc,Entity Framework,Many To Many,Entity,是否可以在多对多关系中插入重复行?这是我的班级: public class EventPaintballBundle { [Key, Column(Order = 0)] public int EventID { get; set; } [Key, Column(Order = 1)] public int PaintballBundleID { get; set; } public virtual Eve

是否可以在多对多关系中插入重复行?这是我的班级:

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();
我想插入两个密钥的副本时出错

{“违反主键约束'PK_dbo.EventPaintballBundles'。 无法在对象“dbo.EventPaintballBundles”中插入重复的键。该 重复的键值为(155,1)。\r\n语句已被删除 终止。”}


如何解决此问题?

创建一个主键,该主键不是以下各项的组合:

    public int EventID { get; set; }
    public int PaintballBundleID { get; set; }
新的主键应该是唯一的,并且与实际存在的任何东西都不相关,这个键的存在只是为了使您的模型在数据库中工作

这是一个典型的错误:认为你的主键应该代表存在的东西。。。没有


我从中学到了这一点:即使我认为现有数据的某些组合将永远保持唯一性。我不用它。我总是根据自己的设计创建主键,不代表任何真实的东西。

创建一个主键,它不是以下各项的组合:

    public int EventID { get; set; }
    public int PaintballBundleID { get; set; }
新的主键应该是唯一的,并且与实际存在的任何东西都不相关,这个键的存在只是为了使您的模型在数据库中工作

这是一个典型的错误:认为你的主键应该代表存在的东西。。。没有


我从中学到了这一点:即使我认为现有数据的某些组合将永远保持唯一性。我不用它。我总是根据自己的设计创建主键,不代表任何真实的东西。

你能展示一下你是如何创建一个
EventPaintballBundle
对象并将其插入数据库的吗?当然,看看我编辑的帖子,但是你不能插入两行具有相同
EventID
paintballbundundleid
,这些是您的实体的PK您不能像人们没有重复的SSN一样插入重复的主键。别管它们,sql server会自动分配这些密钥。但是我需要另一个
日期
个人帐户
的副本,那么我该如何解决这个问题?您能演示一下如何创建
EventPaintballBundle
对象并将其插入数据库吗?当然,看看我编辑的帖子,但是你不能用相同的
EventID
PaintballBundleID
插入两行,它们是你的实体的PKs。你不能插入重复的主键,就像人们没有重复的SSN一样。别管它们,sql server将自动分配这些密钥。但是我需要另一个
日期
个人帐户
的副本,那么我如何解决这个问题?