【问题标题】:Update model from view model从视图模型更新模型
【发布时间】:2011-06-07 17:11:41
【问题描述】:

从视图模型更新 NHibernate 实体的常用方法是什么?

我有一个视图模型编辑器,其中显示了我的所有数据,这些数据是通过返回 DTO 的存储库获取的。然后将 DTO 属性映射到我的视图模型属性。如果我再次获取它,我可以更新我的实体,更新所需的选择属性

有没有更好的办法?

【问题讨论】:

    标签: c# nhibernate mvvm


    【解决方案1】:

    您可以使用 AutoMapper,如果视图模型与实体紧密匹配,这将特别容易。

    How to simply map an NHibernate ISet to IList using AutoMapper

    【讨论】:

      【解决方案2】:

      我通常的方法是使用EditXViewModel 来处理XViewModel 的更改跟踪,并包含一个SaveCommand 来执行实际的实体更新。这确保用户可以撤消所做的更改,而无需记住他们在数据库中的内容(它还减少了事务的数量)。

      当我开始走同样的道路时,以下文章非常有帮助:

      【讨论】:

      • 除非我遗漏了一些明显的东西,否则那些文章不会谈论使用编辑过的数据获取视图模型并保存它。是告诉 NHibernate 通过 id 获取实体,从视图模型进行更改然后保存它的唯一选择吗?这是唯一让我感到困惑的部分。
      • @gcso:嗯,这说明了一些事情。通常在我的SaveCommand 中,我会加载给定的项目,进行更改,然后提交事务。
      • @gcso:或者,如果您不保持会话打开,您可以在模型对象上发出会话更新(重新附加它),执行更改,然后提交并关闭会话。
      猜你喜欢
      • 2011-08-09
      • 1970-01-01
      • 2013-08-26
      • 2018-06-30
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多