EntityFramework便士对英镑

本文关键字:EntityFramework | 更新日期: 2023-09-27 18:25:10

我正在构建一个WPF应用程序。我使用"代码优先"创建了数据库。

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

我试图在我的属性的设置器中进行"转换"

public decimal Price
{
   get { return price; }
   set { price = value/100 ;}
}

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

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

EntityFramework便士对英镑

您可能想要尝试类似的东西

public class YourClassName {
   public decimal Price { get; set; }
   [NotMapped]
   public decimal Pounds => Price/100;
}

在实体框架中,"getter"返回的值将存储到数据库中。因此,您在此属性上设置的任何值都将是value/100。

你想做的是建立一种标准的货币存储方式。在这种情况下,"彭斯"可能是最好的,我会重新命名该房产,使其自我记录(并删除分割)。

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

然后我会提供一种获得英镑的方法:

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

如果您使用的是一个问题注释所暗示的MVVM模式,那么您可以通过调用GetPriceInPounds()来填充视图模型。