0

使用从数据库生成的 RIA 服务和 EF5 EF 模型。

我有一个父对象,我们称它为 A 类。A 类有一个 B 类的集合。ClassB 有一个 ClassC 的实例。

因此,在我看来,用户输入一些数据,默认工作流程将为他们生成大量 ClassB。然而,他们希望能够选择他们将实际创建的那些。

因此,我创建了一个包装器,该包装器包含新的 ClassB 项目,并委托实际操作将 ClassB 添加到 Class A 的集合中。

因此,如果 A 类的默认设置是 2ClassB,但我取消选择第一个,然后执行所需的操作并保存我的更改,我注意到我的 A 类的 ClassB 集合正确地只包含一个 ClassB,但是当我在context 两个日记项目都被保存了。

我意识到,当我将 ClassC 添加到 ClassB 时,ClassB 会自动添加到 ClassB 的 Class Cs 集合中。

因此,当我在上下文中调用 savechanges 时,虽然我只将一个 ClassB 添加到 ClassA,但两者都被保存,因为它们已添加到 ClassC

由于 ClassC 仅映射到本质上是查找表的内容,因此我们无需对其进行编辑或保存更改,而且我们还没有为它实现任何 CRUD 功能。

虽然我们有 ClassA 的元数据类,包含 ClassB,ClassB 的元数据包含 ClassC,但没有 Class C 的元数据类。

有什么想法可以解决这个问题吗?

4

1 回答 1

0

在调用 SaveChanges 之前,使用 EntitySet 的 Remove 函数删除您不想添加到数据库中的实体,例如

dim context as new MyDomainContext
dim a as New ClassA
dim b as New ClassB
b.ClassA = a
context.ClassB.Add(b)     'Both a and b are added to the context
context.ClassA.Remove(a)  'Remove just a from the context
context.SubmitChanges()   'Submit only b
于 2013-07-11T21:19:50.997 回答