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() 来填充视图模型。
我正在构建 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() 来填充视图模型。