我有一个具有Dictionary<string, string>
属性的模型,该属性使用JSON存储在数据库中。我使用自定义NHibernate类型将字典映射到JSON编码的字符串和从JSON编码的字符串映射,这很好。
我的问题是,当我刷新会话,并且已更改的 only 属性是此字典时,则实体不会更新。如果任何其他属性也已更改,则更新实体(包括JSON字符串)。
换句话说,NHibernate使用我的自定义类型正确地将字典映射到JSON,但是这个自定义属性不用于确定实体是否已更改。
建议?
答案 0 :(得分:4)
您需要在IUserType实现中正确覆盖Equals
,以便在与初始值进行比较时返回false。 NHibernate使用Equals
来确定该字段是否包含需要保留的更改。
当另一个属性发生更改时更新的原因是,默认情况下,NHIbernate会发布包括所有映射属性的更新。