2013-07-05 55 views
0

使用RIA Services和EF5 從數據庫生成的EF模型。如何停止EF RIA服務保存相關實體的更改?

我有一個Parent對象可以稱之爲Class A. Class A有一個ClassB的集合。 ClassB有一個ClassC的實例。

因此,我認爲用戶輸入一些數據,默認的工作流程將爲他們產生一個ClassB的bucnh。但是,他們希望能夠選擇他們將實際創建哪些。

因此,我創建了一個包裝器,它將一個委託給實際操作的新的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

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