2016-05-19 16 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

是的,这是行得通的。 –