因此,我们在使用Entity Framework的ASP.net Core 2.0 MVC中有一个模型, 这个模型有十进制字段。
[Display(Name = "Total Cost")]
public decimal TotalCost { get; set; }
[Display(Name = "Total Bill")]
public decimal TotalBill { get; set; }
然后我们有另一对货币属性:
public CurrencyCode CostCurrency { get; set; }
public CurrencyCode BillCurrency { get; set; }
我根据货币
返回显示字符串public string TotalBillDisplay =>
CurrencyDisplayFormat(CostCurrencey, TotalBill);
public string TotalCostDisplay =>
CurrencyDisplayFormat(BillCurrencey, TotalCost);
private string CurrencyDisplayFormat(CurrencyCode currencyCode, decimal amount)
{
return currencyCode.PreSymbol
+ Math.Round(amount, currencyCode.DecimalDigits)
+ currencyCode.PostSymbol;
}
对于每个货币价值而言,拥有3个属性感觉有点麻烦 1)十进制 2)货币 3)显示
我知道我可以创建一个包含所有这三个类的类,但是实体框架迁移不会为TotalCost
和TotalBill
创建十进制列。他们需要与新类(实体)的关系,使得复杂的映射看起来有点矫枉过正。
我可以制作某种属性吗?
答案 0 :(得分:1)
数据库中有各种货币选项(Money,demical(x,y)等),通常在C#中转换为十进制。在我处理磅数的系统中,我只使用这种格式。
[DisplayFormat(DataFormatString = "{0:£0.00}")]
查看您需要的各种货币类型是否存在重载