从多对多 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 循环来处理这个函数,但是哦,好吧。希望这对某人有所帮助。
我有用户和地区。一个用户可以分配到任意数量的区域。
为了实现这一点,我有一个 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 循环来处理这个函数,但是哦,好吧。希望这对某人有所帮助。