使用EF时,decimal类型的小数位数问题处理

问题描述:当用EF的DbContext保存decimal类型数据到数据库,默认只会保存小数点后的前2位小数,其余均置0

解决方法:在创建项目DbContext时,重写DbContext.OnModelCreating()方法,指定精度:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
 { 
     modelBuilder.Entity<Product>().Property(product => product.Price).HasPrecision(18, 6); 
 } 

注:其他封装EF的一些ORM框架,通常在对应的MAP层中指定精度

namespace Mapping.WMS
{
    public class ProductMap : EntityTypeConfiguration<ProductEntity>
    {
        public ProductMap()
        {
            this.ToTable("Product");
            this.HasKey(t => t.PRD_NO);

            this.Property(t => t.PRICE).HasPrecision(18, 6);
        }
    }
}