【问题标题】:Is it possible to exclude some fields of an entity when saving?保存时是否可以排除实体的某些字段?
【发布时间】:2011-06-23 11:48:40
【问题描述】:

我的所有实体都具有以下属性:

  • 公共虚拟日期时间 CreatedDate {get;设置;}
  • 公共虚拟字符串 CreatedBy { get;放; }
  • 公共虚拟日期时间更新日期{获取;放; }
  • 公共虚拟字符串 UpdatedBy { get;放; }

我已经实现了一个 EventListener(IPreUpdateEventListenerIPreInsertEventListener),这样我就可以在插入/更新我的实体之前填充这些属性。
我没有在保存之前加载我的实体,因为我的所有字段都在一个视图中(id,版本)。我唯一想避免放入隐藏字段(在我看来)是 CreatedDateCreateBy
由于我只填写这些字段一次,当第一次创建实体时,我想知道是否有办法在我更新(仅更新)我的实体时排除它们?! 谢谢。

【问题讨论】:

  • 除非您使用新数据更改这些字段或强制更新所有字段,否则框架足够聪明,不会在更新查询中包含未更改的字段,请尝试分析调用并查看是否是案例
  • @K Ivanov -- 这是不正确的,默认情况下 NHibernate 会在更新中包含所有映射的属性,即使它们没有更改。您可以使用动态更新来控制此行为。

标签: asp.net nhibernate asp.net-mvc-2


【解决方案1】:

是的,有。对于 Fluent NHibernate 映射使用

Map(x => x.CreatedDate).Not.Update();
Map(x => x.CreateBy).Not.Update();

用于 XML

<property name="CreatedDate" update="false" />
<property name="CreateBy" update="false" />

【讨论】:

  • 这正是我想要的。效果很好。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多