如何停止EF RIA服务保存对相关实体的更改

本文关键字:实体 EF 何停止 RIA 服务 保存 | 更新日期: 2023-09-27 18:21:15

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

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

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

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

因此,如果默认情况下A类有2ClassB,但我取消选择第一个,然后执行所需的操作并保存我的更改,我会注意到我的A类ClassB集合正确地只包含一个ClassB,但当我在上下文中调用SaveChanges时,两个日记项都会被保存。

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

因此,当我在上下文中调用savechanges时,尽管我只将一个ClassB添加到ClassA中,但由于它们已添加到ClassC 中,所以两者都会被保存

由于ClassC只映射到本质上是一个查找表,我们不需要编辑或保存更改,也没有为它实现任何CRUD功能。

虽然我们有classA的元数据类和ClassB的includes,ClassB的元数据包括ClassC,但没有ClassC的元数据类。

有什么想法我可以绕过这个问题吗?

如何停止EF RIA服务保存对相关实体的更改

在调用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