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

Delete row from many-to-many table (VB.Net, .edmx)

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

为了实现这一点,我有一个 table 个用户,一个 table 个区域,以及第三个 table UserRegion,它只是 UserID、RegionID(两列构成主键并且它们与用户和区域 tables).

有外键关系

Entity Framework 不会将 UserRegion table 导入到我的数据模型中,而是它会为每个用户对象创建一个 属性,它是一个区域列表,并且在每个区域上创建另一个对象对象,它是一个用户列表。这非常有用,只是我不知道如何取消用户与区域的关联。

下面的代码

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.

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

我想通了。

双方都需要解除关系。所以代码应该是:

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

现在我有无数个 for 循环来处理这个函数,但是哦,好吧。希望这对某人有所帮助。