从多对多表中删除行(VB.Net,.edmx)

时间:2015-06-03 19:52:57

标签: entity-framework many-to-many

我有用户和地区。用户可以分配到任意数量的区域。

为了实现这一点,我有一个Users表,一个Regions表和一个UserRegion表,它只是UserID,RegionID(两列都构成了主键,它们与User和Region表有外键关系)。

实体框架不会将UserRegion表导入到我的数据模型中,而是创建每个User对象的属性,该对象是Regions列表,而另一个属性是每个Region对象,即User列表。这是非常有用的,除了我无法弄清楚如何从区域取消关联用户。

以下代码

Dim db as New DatabaseContext
Dim user = db.Users.Where(stuff).First()
user.Regions.Clear()
db.SaveChanges()

产生此错误:

The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.

如何摆脱我不想要的关系?

1 个答案:

答案 0 :(得分:1)

我想出来了。

这种关系需要从双方中消除。所以代码应该是:

user.Regions.Clear()
For Each r in db.Regions
    r.Users.Remove(user)
Next
db.SaveChanges()

现在我有一个很好的循环来完善这个功能但是很好。希望这有助于某人。