簡體   English   中英

我還能如何使用EntityFramework POCO將小數映射為雙精度?

[英]How else can I map decimals to doubles with EntityFramework POCOs?

我正在嘗試重構現有代碼庫以使用POCO EF。 當前它使用EntityObject但是有自定義代碼將映射的對象“展平”到POCO,即,對於所有映射的類,當前有兩個相關的對象,一個名為MyClass POCO和一個名為MyClassEF EntityObject ,具有一個帶有簽名的附加方法MyClass Flatten() 我知道,這似乎很可怕,但是它允許將數據庫中的十進制類型映射為模型中的雙精度類型,這相當簡單,因為轉換可以在Flatten()方法中進行。

在代碼中使用雙精度類型是因為它們在執行分析計算時要快得多,在數據庫中可能使用十進制類型,因為當時它們似乎是個好主意,並且以前的手動ORM沒有類型映射限制EF做到了。 不幸的是,現在更改數據庫中的數據類型是不切實際的,因為使用它的應用程序太多了(盡管大多數應用程序仍將類型轉換為雙精度,但他們仍然希望它在db中為十進制)。

因此,當前我正在考慮修改模型類以使其具有以下內容:

private double _myDouble;
public double MyDouble { get { return _myDouble; } set { _myDouble = value; }
public decimal MyDouble_asDecimal { 
  get { return Convert.ToDecimal(_myDouble); }
  set { _myDouble = Convert.ToDouble(value); }
}

...這似乎很不愉快。 我是否錯過了一個令人眼花obvious亂的更好的方法呢?

一個簡單的擴展方法呢:

public static class MyExtension
{
    public static decimal ToDecimal(this double d)
    {
        return Convert.ToDecimal(d);
    }

    public static double ToDouble(this decimal d)
    {
        return Convert.ToDouble(d);
    }
}

因此,您的模型將保持不變,並且展平方法僅使用customer.DoubleValueProperty.ToDecimal();

不確定這是否是您想要的:-)

另外,如果您正在使用映射和展平,我建議您看一下automapper 減輕了很多痛苦。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM