C# 实体框架:context.add()总是添加重复的条目
我正在尝试执行一个简单的添加操作,但每次我在Access表中添加一条新记录时,它都会添加两条记录,无论我尝试以何种方式添加 这是我的访问类: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; }
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();
}