我们目前正在使用以下方法在 MS SQL Server 中设置货币列类型。
entity.Property(e => e.UnitPrice).HasColumnType("smallmoney");
或者
entity.Property(e => e.UnitPrice).HasColumnType("money");
如果有的话,什么是一种与数据库无关的方式?
我们目前正在使用以下方法在 MS SQL Server 中设置货币列类型。
entity.Property(e => e.UnitPrice).HasColumnType("smallmoney");
或者
entity.Property(e => e.UnitPrice).HasColumnType("money");
如果有的话,什么是一种与数据库无关的方式?
使用十进制而不是金钱。在 c# 和 Db 中使用 Decimal。
也可以看看
modelBuilder.Entity<MetaDomain>().Property(d => d.xyz).HasPrecision(precision, scale);
MSDN 十进制 表示
这使其适用于财务和货币计算。
肯定 Decimal 是处理货币的最与 DB 无关的方式。您应该选择精度/比例以匹配所需的货币和精度。而且我还建议您始终使用金额跟踪货币本身,除非您知道解决方案永远不会或将适用于超过 1 种货币。
因为“货币金额”是指比货币本身描述的小数点多 4 位。由于像大批量零售商这样的行业,他们以几美分的价格管理物品。我必须在演示文稿中向零售商演示 4 位小数。这意味着为许多不同的货币提供服务,并且正如更多组织在内部财务部门所做的那样,如果意味着至少为 5 位小数提供服务。我计划超越那以防万一。 XDR 特别提款权