entityFramework 中decimal精度缺失问题

在entityFramework中,decimal精度默认为2位数,当要设置的精度大于2位并且数据库中设置的decimal精度大于2位时,则将数据保存在数据库中后两位的小数内容将强制为00

 

解决方案:在DbContext中加下如下代码

modelBuilder.Entity<t_freshgoods>().Property(x => x.sale_price).HasPrecision(10, 4);

 public WXMallDbContext()
            : base("WXMallDbContext")
        {
        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //移除复数表名
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            //移除级联删除关系
            //modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
            //modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
            //防止黑幕交易 要不然每次都要访问 EdmMetadata这个表

            base.OnModelCreating(modelBuilder);

            //此处的代码用于修复小数点精度问题  防止4位小数点的数据后两位强制为00
            modelBuilder.Entity<t_freshgoods>().Property(x => x.sale_price).HasPrecision(10, 4);
            modelBuilder.Entity<t_freshgoods>().Property(x => x.sale_qty).HasPrecision(10, 4);
            modelBuilder.Entity<t_freshgoods>().Property(x => x.sale_amt).HasPrecision(10, 4);
            modelBuilder.Entity<t_freshgoods>().Property(x => x.source_price).HasPrecision(10, 4);
        }

  

 

posted @ 2018-09-04 10:37  w1433189426  阅读(532)  评论(0编辑  收藏  举报