如何防止使用EntityFramework 4.1 CodeFirst在保存时将十进制值截断为2位

本文关键字:十进制 2位 保存 何防止 EntityFramework CodeFirst | 更新日期: 2023-09-27 18:01:39

可能重复:
实体框架代码优先:十进制精度

我正在使用带有EntityFramework 4.1代码优先系统的Linq to Entity。保存时,我的所有decimal属性都被截断为小数点后两位。我可以检查被修改的对象,并在调试器中看到它有正确的小数位数,我可以对数据库中的值进行硬编码,以表明它可以接受正确的小数位位数[在本例中为decimal(4,3)]。但当我保存该值时,它从未正确保存,而是将decimal值截断到小数点后两位。我在System.ComponentModel.DataAnnotations中找不到允许您指定精度的类。类别(已消毒(,供参考:

public class Metrics
{
    public decimal? PPM { get; set; }
}

如何防止使用EntityFramework 4.1 CodeFirst在保存时将十进制值截断为2位

public class MyContext : DbContext
{
    public DbSet<Metrics> Metrics { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Metrics>().Property(x => x.PPM).HasPrecision(4, 3);
    }
}