2011-02-08 108 views
2

我所有的实体都具有以下属性:保存时是否可以排除实体的某些字段?

  • public virtual DateTime CreatedDate {get;设置;}
  • 公共虚拟字符串CreatedBy {get;组; }
  • public virtual DateTime UpdatedDate {get;组; }
  • public virtual string UpdatedBy {get;组; }

我已经实现了一个事件监听(IPreUpdateEventListenerIPreInsertEventListener),这样我可以在插入之前填补这些属性/更新我的实体。
保存之前我不加载我的实体因为我已经在视图(id,版本)中获得了所有的字段。我想唯一要避免放在隐藏字段(我的观点)是CreatedDateCreateBy
因为我填写这些字段只有一次,当实体创建的第一次,我在想,如果有一种方法将它们排除在外,当我更新(只更新)我entitiy? 谢谢。

+0

除非您更改与新数据或对各个领域的框架是足够聪明不包括在更新中保持不变的字段力更新这些字段查询,尝试分析调用,看看是否是这种情况 – 2011-02-08 14:45:33

+0

@K Ivanov - 这是不正确的,默认情况下,NHibernate包含更新中的所有映射属性,即使它们没有改变。您可以使用动态更新来控制此行为。 – 2011-02-08 14:53:26

回答

4

是的。为了流利的NHibernate映射使用

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

为XML使用

<property name="CreatedDate" update="false" /> 
<property name="CreateBy" update="false" /> 
相关问题