卡特尔使用IEditableObject

时间:2018-10-17 10:36:12

标签: catel

我正在测试Catel MVVM,我想使用已实现的IEditableObject。我有一些问题,但是我发现的documentation在这一点上不是很详细。

有人有一个有用的链接吗,我该如何设置它或它如何工作,或类似的东西?还是我应该真正地看一下源代码,以了解这些要点,并了解一下工作是如何进行的。

我所遇到的问题是:

  • SaveViewModelAsync()方法到底是什么?
  • 它在哪里保存数据,或者在哪里可以配置它?
  • 如何将其与Orc.EntityFramework6一起使用,还是手动使用?
  • SaveViewModelAsync()SaveAsync()有什么区别?
  • CancelViewModelAsync()CancelAsync()有什么区别?

我只能取消一次编辑。如果我再次编辑同一ViewModel,则取消将不再起作用。 我认为第一次取消后仅缺少BeginEdit(),就像documentation所建议的那样。这里有一些有关这一点的信息:

  1. 我编辑ViewModel,然后Model设置新值
  2. 我执行CancelViewModelAsync(),未触碰模型中的设置器
  3. 我编辑ViewModel,然后Model设置新值。当前值为原始值
  4. 我执行CancelViewModelAsync(),什么都没发生
  5. 我编辑ViewModel,然后Model设置新值。当前值是第3步中的修改值,如“视图”所示

感谢帮助

1 个答案:

答案 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