C# 实体框架:context.add()总是添加重复的条目

C# 实体框架:context.add()总是添加重复的条目,c#,asp.net,entity-framework,entity-framework-5,C#,Asp.net,Entity Framework,Entity Framework 5,我正在尝试执行一个简单的添加操作,但每次我在Access表中添加一条新记录时,它都会添加两条记录,无论我尝试以何种方式添加 这是我的访问类: public partial class Access { public Access() { this.Rights = new HashSet<Right>(); } public int AccessId { get; set; }

我正在尝试执行一个简单的添加操作,但每次我在Access表中添加一条新记录时,它都会添加两条记录,无论我尝试以何种方式添加

这是我的访问类:

    public partial class Access
    {
        public Access()
        {
            this.Rights = new HashSet<Right>();
        }

        public int AccessId { get; set; }
        public string Name { get; set; }
        public string Type { get; set; }

        public virtual ICollection<Right> Rights { get; set; }
    }
}

我的结果是,Access表中有两行名称完全相同。我不明白为什么会增加两倍。有人能把我引向正确的方向吗?

这件事迟早会让每个EF开发者感到困惑。看这个:谢谢你的链接。我确实读过那篇文章,但我读过的每一篇文章都关注这样一种情况,即插入一个新的Access条目和一个现有的正确条目,并且正确条目是重复的。我的问题是,我正在添加一个没有任何权限条目的新访问条目,而我的访问条目是重复的。@GertArnold:根据文章,我尝试附加一个空白权限,因为我没有尝试将权限与当前访问关联:“db.entry(newObject).State=System.Data.EntityState.Added;db.Rights.Attach(新的Right());db.SaveChanges();'但是它仍然在插入重复的访问项哦,您添加了两次相同的访问。对于英孚来说,这只是一个新记录。你为什么不跳过问题中关于权利的所有内容?他们在这里不起任何作用(乍一看我没注意到)。你的代码应该更新现有的访问权限吗?@GertArnold。好的,我删除了关于权限的额外代码。我不在乎权利表,我只是想给大家一个总体的印象。你能解释一下我是怎么加两次的吗?我的代码只需要在access数据库中添加一个新条目。这就是我想要的。这是每个EF开发者迟早都会困惑的事情。看这个:谢谢你的链接。我确实读过那篇文章,但我读过的每一篇文章都关注这样一种情况,即插入一个新的Access条目和一个现有的正确条目,并且正确条目是重复的。我的问题是,我正在添加一个没有任何权限条目的新访问条目,而我的访问条目是重复的。@GertArnold:根据文章,我尝试附加一个空白权限,因为我没有尝试将权限与当前访问关联:“db.entry(newObject).State=System.Data.EntityState.Added;db.Rights.Attach(新的Right());db.SaveChanges();'但是它仍然在插入重复的访问项哦,您添加了两次相同的访问。对于英孚来说,这只是一个新记录。你为什么不跳过问题中关于权利的所有内容?他们在这里不起任何作用(乍一看我没注意到)。你的代码应该更新现有的访问权限吗?@GertArnold。好的,我删除了关于权限的额外代码。我不在乎权利表,我只是想给大家一个总体的印象。你能解释一下我是怎么加两次的吗?我的代码只需要在access数据库中添加一个新条目。这就是我想要的。
    public partial class UserManEntities : DbContext
{
    public UserManEntities()
        : base("name=UserManEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public DbSet<Access> Accesses { get; set; }
    public DbSet<Right> Rights { get; set; }
}
            using (var db = new UserManEntities())
            {
                Access newObject = new Access(){name=newUser, type="user"};
                db.Accesses.Add(newObject);
                db.SaveChanges();
            }