我有两个实体,彼此有多对多的关系。
我使用以下代码生成多对多关系
Class A
{
int ID
public virtual ICollection<B> B;
}
Class B
{
int ID;
public virtual ICollection<A> A;
}
很明显,EF在我AB
和A_ID
的{{1}}名称中为我自动生成了另一个加入表格。当然,我没有任何名为B_ID
的班级和AB
的班级。
因此,在添加I DBSet
或a.B.Add(b)
时。一切都很好。
现在我的查询是,在更新A或B时,我需要删除所有现有的多对多实体,并使用新的相关实体更新A或B.
例如在更新A时,我需要移除所有B并填充新B。反之,对于B的更新,我需要删除所有A并插入新的A。
我尝试将所有现有实体删除为..
b.A.Add(a)
但这不会删除旧实体。而是插入我填充的新B。我也试过它
A a = db.A.Where(x => x.ID == 1);
a.B = new List<B>();
//Populate a.B with new B's as per requirement
db.Entry(a).State = EntityState.Modified;
db.SaveChanges();
但它也是如此。
我需要完全删除AB表中针对特定A的所有现有实体,然后用新B填充。