1

我正在使用现有的 [设计不良] 数据库,该数据库将美元金额存储为数据库中的整数(即 $10.99 == 1099)。我希望我的实体类将此值视为小数,以便使用代码不必进行翻译。

有没有办法将值转换为整数和十进制,然后使用 Data Annotations 或 Fluent 配置返回?

与此同时,我正在使用一种 hack,它本质上是用一个处理翻译的小数属性“包装”整数属性。

    [Column("intTotal")]
    public virtual int TotalAsInt { get; set; }

    [NotMapped]
    public virtual decimal Total
    {
        get { return (decimal) TotalAsInt/100; }
        set { TotalAsInt = (int)(value*100); }
    }
4

1 回答 1

1

有没有办法将值转换为整数和十进制,然后使用 Data Annotations 或 Fluent 配置返回?

据我所知不是。您的解决方案看起来不错。

TotalAsInt您可以通过将其设为属性来隐藏private,但是您不能在or之IQueryable类的方法中使用它。WhereSelect

所以,在你修复数据库之前,我会选择你的解决方案。

于 2012-11-19T13:53:06.360 回答