EntityFramework 便士换算成英镑

EntityFramework pence to pounds

我正在构建 WPF 应用程序。我使用 Code-First 创建了我的数据库。

我需要以便士(例如 500)为单位插入商品价格,但显示价格时应该以英镑 (5,00) 为单位。

我尝试在 属性

的 setter 中执行 "conversion"
public decimal Price
{
   get { return price; }
   set { price = value/100 ;}
}

但是,出于某种原因,当我手动删除数据库时,ListView 中的值有时显示为 0,05,有时显示为 500,00。这个方法肯定有问题。

如何让我的数据库将我的值的最后 2 个数字视为十进制数?

你可能想试试这样的东西

public class YourClassName {
   public decimal Price { get; set; }

   [NotMapped]
   public decimal Pounds => Price/100;
}

在Entity Framework中,"getter"返回的值将存储到数据库中。因此,您在此 属性 上设置的任何内容都将是 value/100.

您要做的是建立一种存储货币的标准方式。可能在这种情况下,"Pence" 是最好的,我会重新表述 属性 以使其自我记录(并删除除法)。

public decimal PriceInPence
{
   get { return price; }
   set { price = value;}
}

那么我会提供一种获取英镑的方法:

public decimal GetPriceInPounds()
{
   return price == 0m ? 0m : price/100m;
}

如果您正在使用您的问题评论之一所暗示的 MVVM 模式,您将通过调用 GetPriceInPounds() 来填充视图模型。