使用RIA服务和EF5 从数据库生成的EF模型。
我有一个Parent对象让我们称之为A类。 A类有一系列ClassB。 ClassB有一个ClassC实例。
因此,在我看来,用户输入一些数据,默认工作流程将为他们生成一个ClassB的bucnh。但是,他们希望能够选择他们实际创建的那些。
因此,我创建了一个包装器,其中包含新的ClassB项,其中包含将ClassB添加到Class A集合的实际操作的委托。
因此,如果A类默认为具有2ClassB,但我取消选择第一个,然后执行所需操作并保存我的更改,我注意到我的Class A的ClassB集合只正确包含一个ClassB,但是当我调用时SaveChanges在上下文中都保存了日记项目。
我意识到当我将ClassC添加到ClassB时,ClassB会自动添加到ClassB的Class Cs集合中。
因此,当我在上下文中调用savechanges时,虽然我只将一个ClassB添加到ClassA,但两者都被保存,因为它们已被添加到ClassC
由于ClassC只映射到本质上是一个查找表,我们无需编辑或保存更改,我们还没有为它实现任何CRUD功能。
虽然我们有classA的元数据类,包含ClassB,而ClassB的元数据包含ClassC,但C类没有元数据类。
我有什么想法可以解决这个问题吗?
答案 0 :(得分: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