我们目前正在使用以下方法在MS SQL Server中设置资金列类型。
entity.Property(e => e.UnitPrice).HasColumnType("smallmoney");
或
entity.Property(e => e.UnitPrice).HasColumnType("money");
什么,如果有的话,是一种更加数据库不可知的方式?
答案 0 :(得分:0)
使用十进制而不是金钱。在c#和Db中使用Decimal 另见
modelBuilder.Entity<MetaDomain>().Property(d => d.xyz).HasPrecision(precision, scale);
这使得它适用于财务和货币计算。
当然,Decimal是处理货币的数据库最不可知的方式。 您应该选择精度/比例以匹配所需的货币和准确度。 而且我还建议你总是用金额跟踪货币本身,除非你知道解决方案永远不会或将超过1种货币。
“货币金额”是指比货币本身描述的额外小数点数。由于大批量零售商等行业管理的产品只有几分钱。我不得不在演示文稿中向零售商演示4位小数。 它意味着为许多不同的货币提供服务,而且正如更多的组织在内部库房中做的那样,如果意味着满足至少5位小数。为了以防万一,我正在计划之外。 XDR special drawing rights