nHibernate saveor更新/合并分离的对象
本文关键字:分离 对象 合并 saveor 更新 nHibernate | 更新日期: 2023-09-27 18:26:59
我正在使用web服务进行应用程序开发。作为ORM,我使用nHibernate。
问题:
在应用层中,我加载ID(pk)为32的存储库实体,将其转换为viewModel并发送到表示层。会话已刷新。
然后,用户可以更改该实体中的数据,并向应用层发送编辑数据的请求。这是我的问题。通过请求(向应用层)和所有数据作为视图模型(而不是实体对象),iam也发送了一个ID,但无法创建具有ID的业务对象(ID由nhibernate生成,私有集)。我应该使用反射并注入该id,然后使用nhibernate saveorupdate或merge方法,还是手动比较和设置新值?
谢谢。
与其尝试创建具有id的业务对象,不如从会话中加载该对象以开始。从nhibernate加载业务对象后,根据编辑模型修改值,然后更新对象。
您不必手动比较字段来查看它们是否发生了更改,nhibernate将为您处理此问题,并且只使用更改的字段更新DB。
你的方法可能看起来像:
public ActionResult Update(EditModel model)
{
var entity = _session.Get<Entity>(model.Id);
entity.Name = model.Name;
entity.Description = model.Description;
entity.SomeField = model.SomeField;
_session.SaveOrUpdate(entity);
}