Entity framework 实体框架-多对多-不保存

Entity framework 实体框架-多对多-不保存,entity-framework,many-to-many,Entity Framework,Many To Many,我有两个对象对象A和对象B。它们有一个多对多的关系 我使用的是一个通用数据访问层,它可以: public virtual void Save(params T[] items) { var keyName = GetIdKeyName<T>(); foreach (T item in items.Where(GetByIdPredicate<T>(0, keyName).Compile())) { db.Entry(item).State = Ent

我有两个对象对象A和对象B。它们有一个多对多的关系

我使用的是一个通用数据访问层,它可以:

public virtual void Save(params T[] items)
{
  var keyName = GetIdKeyName<T>();

  foreach (T item in items.Where(GetByIdPredicate<T>(0, keyName).Compile()))
  {
    db.Entry(item).State = EntityState.Added;
  }

  foreach (T item in items.Where(GetByIdPredicate<T>(0, keyName, ExpressionType.NotEqual).Compile()))
  {
    db.Entry(item).State = EntityState.Modified;
  }

  db.SaveChanges();
}
生成了多对多关系,但它创建了一个新的ObjectB。我认为这是因为它没有更新的entitystate,所以我尝试:

dataAccess.Save(ObjectB)
ObjectA.ObjectBs.Add(ObjectB)
dataAccess.Save(ObjectA)

但同样的事情也发生了。有什么办法可以解决这个问题吗?

我发现了我的问题。我正在为每个对象创建一个数据访问实例。所以当DataAccess保存时,它不知道DataAccess。我改变了访问层,所以方法采用了一种类型,一切都很好

dataAccess.Save(ObjectB)
ObjectA.ObjectBs.Add(ObjectB)
dataAccess.Save(ObjectA)