Fluent API HasColumnType - 数据库不可知

时间:2013-08-25 02:18:22

标签: entity-framework fluent-interface

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

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

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

什么,如果有的话,是一种更加数据库不可知的方式?

1 个答案:

答案 0 :(得分:0)

使用十进制而不是金钱。在c#和Db中使用Decimal 另见

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

decimals in SQL server docu

MSDN decimal陈述

  

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

当然,Decimal是处理货币的数据库最不可知的方式。 您应该选择精度/比例以匹配所需的货币和准确度。 而且我还建议你总是用金额跟踪货币本身,除非你知道解决方案永远不会或将超过1种货币。

“货币金额”是指比货币本身描述的额外小数点数。由于大批量零售商等行业管理的产品只有几分钱。我不得不在演示文稿中向零售商演示4位小数。 它意味着为许多不同的货币提供服务,而且正如更多的组织在内部库房中做的那样,如果意味着满足至少5位小数。为了以防万一,我正在计划之外。 XDR special drawing rights