C# 的decimal精度入库的问题

33 篇文章 0 订阅
11 篇文章 0 订阅

首先说一下C# 和 SQL 中的decimal默认都是 (18,2) 。

就算SQL把精度改成 (18,4),C#进去的数据依旧是(18,2),第三四位小数,根本进不了,比如插入0.1234直接数据库成0.1200

那么可能会出现统计的一些问题-----对不齐。。。然后领导各种喷。。

 

mvc中,需要对字段重新定义字段类型,就是codefirst的那一套。

摘要:
允许为模型中的实体类型执行配置。可以通过对 System.Data.Entity.DbModelBuilder 使用 Entity 方法来获取 EntityTypeConfiguration,也可以通过对System.Data.Entity.DbModelBuilder 使用 Configurations 属性来注册从 EntityTypeConfiguration派生的自定义类型。

 

/// <summary>
/// 类
/// </summary>
[Table("St_Detailed")]
public class DetailedModel
{
     [Key]
     [Display(Name = "编号"), Required]
     public Guid ID { get; set; }

     ......
}
public class DetailedConfiguration : EntityTypeConfiguration<DetailedModel>
{
     public DetailedConfiguration()
     {
         Property(t => t.Ratio).HasPrecision(9, 2);
         Property(t => t.ContractNo).IsUnicode(false);
         Property(t => t.Achievement).HasPrecision(18, 4);
         Property(t => t.SignTime).HasColumnType("date");
     }
}



public class BaseContext : DbContext
{
    public BaseContext() : base("name=Context")
    { }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new DetailedConfiguration());
    }
}



这样就能保证4位小数入库了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值