更新时如何删除EF多对多关系

时间:2017-03-22 16:16:11

标签: entity-framework many-to-many

我有两个实体,彼此有多对多的关系。

我使用以下代码生成多对多关系

Class A
{
    int ID
    public virtual ICollection<B> B;
}

Class B
{
    int ID;
    public virtual ICollection<A> A;
}

很明显,EF在我ABA_ID的{​​{1}}名称中为我自动生成了另一个加入表格。当然,我没有任何名为B_ID的班级和AB的班级。

因此,在添加I DBSeta.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填充。

0 个答案:

没有答案