NHibernate更改跟踪不会获取自定义类型的更改(IUserType)

时间:2010-05-20 14:09:57

标签: nhibernate

我有一个具有Dictionary<string, string>属性的模型,该属性使用JSON存储在数据库中。我使用自定义NHibernate类型将字典映射到JSON编码的字符串和从JSON编码的字符串映射,这很好。

我的问题是,当我刷新会话,并且已更改的 only 属性是此字典时,则实体不会更新。如果任何其他属性也已更改,则更新实体(包括JSON字符串)。

换句话说,NHibernate使用我的自定义类型正确地将字典映射到JSON,但是这个自定义属性不用于确定实体是否已更改。

建议?

1 个答案:

答案 0 :(得分:4)

您需要在IUserType实现中正确覆盖Equals,以便在与初始值进行比较时返回false。 NHibernate使用Equals来确定该字段是否包含需要保留的更改。

当另一个属性发生更改时更新的原因是,默认情况下,NHIbernate会发布包括所有映射属性的更新。