需要有关在实体框架中处理更新多对多关系的建议

时间:2016-12-14 00:37:37

标签: vb.net entity-framework visual-studio-2015 many-to-many ef-model-first

我有什么:

Visual Basic 2015,实体框架(DBContext),WinForms

我的问题:

我正在使用EF编写VB 2015程序( Model-First ,因为我从头开始),我的一些实体多对多关系。我读到,为了添加或删除Entity1的实例与Entity2的实例之间的关系,必须执行以下操作:

'获取实体

Dim e1 As Entity1 = query getting an instance of Entity1   'Navigation property: e1.Entity2Collection*

Dim e2 As Entity2 = query getting an instance of Entity2   'Navigation property: e2.Entity1Colection*

'填充集合

dbc.Entry(e1).Collection(Function(e) e.Entity2Collection).Load()   'lambda overload

dbc.Entry(e1).Collection("Entity2Collection").Load()   ' string overload

'执行更新

e1.Entity2Collection.Add(e2)
dbc.SaveChanges()

e1.Entity2Colection.Remove(e2)
dbc.SaveChanges()

Entry / Collection / Load语句很重要,因为除非填充了集合,否则将无法正确添加/删除关系(另一种方法是在原始查询中使用Include方法)。

但是这里我不确定该怎么做:

假设Entity1与 2个或更多其他实体中的每个实体具有多对多关系 - 例如,

实体1与Entity2是多对多的,

Entity1与Entity3是多对多的,并且

Entity1与Entity4是多对多的

我是否也需要这样做:

dbc.Entry(e1).Collection(Function(e) e.Entity3Collection).Load()

dbc.Entry(e1).Collection(Function(e) e.Entity4Collection).Load()

在执行添加或删除操作之前,上述更新是否正常工作?

0 个答案:

没有答案