[英]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.