我有什么:
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()
在执行添加或删除操作之前,上述更新是否正常工作?