nhibernate - 由于计算属性的小数精度导致幻影更新

标签 nhibernate fluent-nhibernate

This article描述了我的问题。我有几个计算的属性。这些在 SQL Server 中输入为 decimal(9,2) ,在我的 C# 类中输入为 decimal。问题的一个例子是:

  • 对象加载的属性值为 14.9
  • 进行一次计算,将属性值更改为 14.90393
  • 刷新 session 时,NHibernate 会发出更新,因为该属性是脏的
  • 由于数据库字段是十进制 (9,2),因此存储的值不会改变

  • 基本上每次加载此对象时都会发出幻影更新。我不想截断我的业务对象中的计算,因为这将它们与数据库紧密耦合,我不想失去其他计算中的精度。我尝试在映射文件中设置比例和精度或 CustomType("Decimal(9,2)") 但这似乎只影响模式生成。

    我唯一合理的选择似乎是创建一个 IUserType 实现来处理这个问题。有更好的解决方案吗?

    最佳答案

    改为映射到舍入属性

    关于nhibernate - 由于计算属性的小数精度导致幻影更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545838/

    相关文章:

    c# - NHibernate:传递给 save() 和级联的未初始化代理

    c# - 如何使用 Fluent NHibernate 映射包含与父类型相同类型的实体的列表?

    c# - PostgreSQL - 选择不同 - 按字段排序未在选择中返回

    nhibernate - NHibernate 映射的替代方案?

    nhibernate - NHibernate 和 iBATIS.NET 有什么区别?

    c# - Fluent NHibernate 自动映射错误

    fluent-nhibernate - FluentNHibernate - 自动映射忽略属性

    c# - 将 nHibernate 查询序列化为 JSON

    nhibernate - 将来自文件的数据库配置与 Fluent NHibernate 映射混合

    c# - 休眠 : One to One mapping