2016-05-19 14 views
0

我有一個關於SaveAsync方法問題做的 - 想象以下場景:Catels ViewModelBase.SaveAsync方法 - 如何在「兒童對話」

  • 你的主要「數據」(如客戶)的「子數據「(例如Order),現在您想要添加/編輯/刪除其中一個」子數據行「,但希望對」父級「(Customer)執行保存操作。

「子數據行」的ViewModel(OrderViewModel)應該在SaveAsync中做什麼?
您是否會在ViewModel中包含一些參數以啓用保存行爲並評估SaveAsync調用中的參數?
或很可能創建一個「OrderBaseViewModel」不保存,然後從兩個具體的ViewModels繼承(一個省,一個沒有)

問候

約翰內斯Colmsee

回答

0

一個解決辦法應始終取消子視圖,除非用戶明確保存父視圖。保存父母將始終深入到較低視圖模型。

+0

嗯......「總是取消子視圖,除非用戶明確保存父視圖」 - 如果SaveChanges的調用來自父視圖,我怎麼知道? –

+0

想到的一個想法是這樣的:我的ViewModel有一個「UnitOfWork」,它用於保存對持久性存儲的更改。在「SaveChangesAsync」中,我可以這樣做:「if(this.uow!= null){return await this.uow.SaveChangesAsync();} else {return true;} ....所以 - 在一種情況下「獨立」)將提供一個UnitOfWork,在另一個(「ChildView」)中,UnitOfWork將爲「null」,並且SaveChanges只會應用更改(但不保存到持久性存儲) –

+0

是的,這是行得通的。 –