C# 我可以使用数据注释或Fluent在数据存储和实体类之间转换值吗?

C# 我可以使用数据注释或Fluent在数据存储和实体类之间转换值吗?,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我正在使用一个现有的[设计糟糕的]数据库,该数据库将美元金额存储为整数(即$10.99==1099)。我希望我的实体类将该值视为十进制,这样使用代码就不必进行转换 [Column("intTotal")] public virtual int TotalAsInt { get; set; } [NotMapped] public virtual decimal Total { get { return (decimal) TotalAsI

我正在使用一个现有的[设计糟糕的]数据库,该数据库将美元金额存储为整数(即$10.99==1099)。我希望我的实体类将该值视为十进制,这样使用代码就不必进行转换

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

    [NotMapped]
    public virtual decimal Total
    {
        get { return (decimal) TotalAsInt/100; }
        set { TotalAsInt = (int)(value*100); }
    }
是否有方法将值转换为整数或从整数转换为小数,然后使用数据注释或流畅配置返回?

与此同时,我正在使用一个hack,它本质上是用一个处理转换的十进制属性“包装”整数属性

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

    [NotMapped]
    public virtual decimal Total
    {
        get { return (decimal) TotalAsInt/100; }
        set { TotalAsInt = (int)(value*100); }
    }
有没有一种方法可以使用数据注释或Fluent配置将值转换为整数或从整数转换为十进制,然后再转换回来

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

您可以通过将其设置为
私有属性来隐藏
TotalAsInt
,但不能在
IQueryable
方法中使用它,如
Where
Select

所以,在你修复数据库之前,我会使用你的解决方案

有没有一种方法可以使用数据注释或Fluent配置将值转换为整数或从整数转换为十进制,然后再转换回来

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

您可以通过将其设置为
私有属性来隐藏
TotalAsInt
,但不能在
IQueryable
方法中使用它,如
Where
Select


因此,我会一直使用您的解决方案,直到您能够修复数据库。

如果我将TotalAsInt设置为私有,它将隐藏其对实体框架的可访问性,从而消除数据绑定,不是吗?有(),但这可能不值得付出努力和妥协。对我来说,通过装配层/抽象隐藏可访问性更有意义,但这对于我在这个项目上的需求来说是过分的。太糟糕了,EF没有办法通过配置进行类型转换。在将此标记为答案之前,我将等待一段时间,因为我仍然对可能的基于配置的解决方案抱有希望。:)如果我将TotalAsInt设为私有,它将隐藏其对实体框架的可访问性,从而消除数据绑定,不是吗?有(),但可能不值得付出努力和妥协。对我来说,通过装配层/抽象隐藏可访问性会更有意义,但这对于我在这个项目上的需求来说是过分的。太糟糕了,EF没有办法通过配置进行类型转换。在将此标记为答案之前,我将等待一段时间,因为我仍然对可能的基于配置的解决方案抱有希望。:)