C# 如何停止EF RIA services保存相关实体上的更改?

C# 如何停止EF RIA services保存相关实体上的更改?,c#,entity-framework,silverlight,ria,C#,Entity Framework,Silverlight,Ria,使用RIA服务和EF5 从数据库生成的EF模型 我有一个父对象,我们称它为类a。 A类有B类的集合。ClassB有一个ClassC的实例 因此,在我看来,用户输入了一些数据,默认的工作流将为他们生成一个B类的bucnh。然而,他们希望能够选择他们将实际创建哪些 因此,我创建了一个包装器,其中包含新的ClassB项,并将委托给实际操作,该操作将把ClassB添加到类a的集合中 因此,如果默认情况下类A有2个类B,但我取消选择第一个,然后执行所需的操作并保存我的更改,我注意到我的类A的类B集合正确地

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

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

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

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

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

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

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

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

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


您知道如何解决这个问题吗?

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