首先说一下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位小数入库了。