C# 实体框架货币,小数点后3位

C# 实体框架货币,小数点后3位,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,在asp.net 5+中,首先使用带有代码的EF6,如何存储带有3个小数点的十进制值 也就是说,我的领域需要能够存储272.724 目前我有: [DataType(DataType.Currency)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")] [DisplayName("Report Fee")] public decimal ReportFee { get; set; } 我尝试添加:

在asp.net 5+中,首先使用带有代码的EF6,如何存储带有3个小数点的十进制值

也就是说,我的领域需要能够存储272.724

目前我有:

[DataType(DataType.Currency)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]
[DisplayName("Report Fee")]
public decimal ReportFee { get; set; }
我尝试添加:

[Column(TypeName = "decimal(18,3)")]
但我得到了一个错误:

The store type 'decimal(18,3)' could not be found in the SqlServer provider manifest

您可以尝试使用自定义约定。要设置十进制精度,请执行以下操作:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Properties<decimal>().Configure(config => config.HasPrecision(18, 3));
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Properties().Configure(config=>config.HasPrecision(18,3));
}

entity framework core 2?对不起,应该是EF6.STORE,用于将来的计算,这仍然是一个非常可疑的要求,应该在需要的地方和时候进行舍入,而这不在存储中。只需使用
DataFormatString=“{0:c3}”)
这不适用于所有小数吗?我只需要一个字段