Entity framework 实体框架-多对多-不保存
我有两个对象对象A和对象B。它们有一个多对多的关系 我使用的是一个通用数据访问层,它可以: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
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)