我正在使用UserType在我的数据库中维护一个列(Created)。
保存到db时,只需检查相关属性是否等于DateTime.MinValue,如果是,则将其更新为DateTime.Now(覆盖NullSafeSet)。但是,这个更新不会立即被nhibernate反映出来,如果我再次加载对象而不驱逐它,Created的值仍然是DateTime.MinValue。
有没有其他方法可以获得值NHibernate返回以返回更新的值,而不是使用Session.Evict()?
答案 0 :(得分:1)
您可以(也可能应该)通过挂钩预插入和预更新事件而不是使用IUserType
来实现。查看this question了解详情。
要对您的实体执行您想要的操作,您可以将evt.Entity
强制转换为支持您的字段的接口(示例中为IHasLastModified
),然后设置该值。