我正在测试Catel MVVM,我想使用已实现的IEditableObject
。我有一些问题,但是我发现的documentation在这一点上不是很详细。
有人有一个有用的链接吗,我该如何设置它或它如何工作,或类似的东西?还是我应该真正地看一下源代码,以了解这些要点,并了解一下工作是如何进行的。
我所遇到的问题是:
SaveViewModelAsync()
方法到底是什么?Orc.EntityFramework6
一起使用,还是手动使用?SaveViewModelAsync()
和SaveAsync()
有什么区别?CancelViewModelAsync()
和CancelAsync()
有什么区别?我只能取消一次编辑。如果我再次编辑同一ViewModel,则取消将不再起作用。
我认为第一次取消后仅缺少BeginEdit()
,就像documentation所建议的那样。这里有一些有关这一点的信息:
CancelViewModelAsync()
,未触碰模型中的设置器CancelViewModelAsync()
,什么都没发生感谢帮助
答案 0 :(得分:1)
单个问题中有很多问题,但会尝试回答:
Q1)SaveViewModelAsync()方法到底是什么?
它会在支持它的所有型号上调用IEditableObject.EndEdit
(并用ModelAttribute
装饰
问题2)它在哪里保存数据,或在哪里配置?
它只是批准对模型的更改,而不会“保存”任何内容。因此,例如,如果您使用的是Catel模型,它将提交VM所做的更改。如果要取消,它将使模型恢复到初始化VM时的状态。
问题3)如何将其与Orc.EntityFramework6一起使用,还是手动使用?
您必须手动执行此操作。 Catel中的VM可与模型一起使用,由您决定将它们持久化的时间/位置(例如数据库,磁盘,Web服务等)
问题4,SaveViewModelAsync()和SaveAsync()有什么区别?
SaveViewModelAsync
是被调用的公共方法,并为您处理管道。 SaveAsync
是一种您可以覆盖的方法,以添加其他保存逻辑(例如,存储在数据库中,更新服务等)。
Q5)CancelViewModelAsync()和CancelAsync()有什么区别?
请参阅问题4