我正在使用ObservableCollection<T>
將某些數據綁定到某個視圖。 在編輯數據庫現有數據時,我可以通過在我的視圖模型中只調用一個Savechanges()
方法來保存數據編輯,還可以將新項目添加到集合中,並且可以編輯它們,但SaveChanges()
方法不會將其他行插入到D b。在代碼優先的情況下跟蹤DbContext與ObservableCollection的更改
我不知道傳遞給viewmodel的實體是什麼。 T是多個實體的合併類,所以我必須這樣做。 在構造函數:
collection=globalContext.TSet;
//the collection and context are defined in class level
代碼來獲得一個新項目:
collection.Add(New T());
CurrentItem=collection.Last();
其中collection是ObservableCollection<T>
和CurrentItem
是當前正在編輯的項目。
編輯: 的context.ChangeTracker.Entries
不能識別新的對象。
我有一個複雜的類型(比如T),它是一些連接查詢的結果,我不知道T是從哪個實體創建的,所以我無法獲取實體=>我不能說上下文是什麼我想要添加的實體類型。
所以我必須強制更改跟蹤器從複雜類型創建新對象,這是一些連接查詢的結果。
我正在使用EF4.3.1
有什麼建議嗎?
謝謝。
你可以在T的構造函數中添加新的組合對象的部件到相應的Dbsets嗎?然後他們會被追蹤,並保存上下文的變化應該工作。但我不是100%確定,如果我明白這個問題是正確的... – Sascha 2012-04-14 08:32:40
@Sascha:新的T添加到集合中,當我在視圖模型中設置新的T屬性時,我可以看到屬性設置視圖模型和該集合包含新的T,但它們在調用savechanges();之後不會影響db(謝謝) – Mohsen 2012-04-14 08:58:00
但是ObservableCollection並不知道DbSet或上下文中的任何內容。它應該如何猜測其他邏輯應該應用於剛添加到自身的對象? – Sascha 2012-04-14 09:00:22