问题描述:当用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); } } }