1

我们目前正在使用以下方法在 MS SQL Server 中设置货币列类型。

entity.Property(e => e.UnitPrice).HasColumnType("smallmoney");

或者

entity.Property(e => e.UnitPrice).HasColumnType("money");

如果有的话,什么是一种与数据库无关的方式?

4

1 回答 1

0

使用十进制而不是金钱。在 c# 和 Db 中使用 Decimal。
也可以看看

modelBuilder.Entity<MetaDomain>().Property(d => d.xyz).HasPrecision(precision, scale);

SQL Server 文档中的小数

MSDN 十进制 表示

这使其适用于财务和货币计算。

肯定 Decimal 是处理货币的最与 DB 无关的方式。您应该选择精度/比例以匹配所需的货币和精度。而且我还建议您始终使用金额跟踪货币本身,除非您知道解决方案永远不会或将适用于超过 1 种货币。

因为“货币金额”是指比货币本身描述的小数点多 4 位。由于像大批量零售商这样的行业,他们以几美分的价格管理物品。我必须在演示文稿中向零售商演示 4 位小数。这意味着为许多不同的货币提供服务,并且正如更多组织在内部财务部门所做的那样,如果意味着至少为 5 位小数提供服务。我计划超越那以防万一。 XDR 特别提款权

于 2013-08-25T13:00:42.483 回答