【问题标题】:How do I prevent decimal values from being truncated to 2 places on save using the EntityFramework 4.1 CodeFirst? [duplicate]如何使用 EntityFramework 4.1 CodeFirst 防止十进制值在保存时被截断为 2 位? [复制]
【发布时间】:2011-10-01 12:54:09
【问题描述】:

可能重复:
Entity Framework Code First: decimal precision

我将 Linq-to-Entities 与 EntityFramework 4.1 Code First 系统一起使用。我所有的decimal 属性在保存时都被截断到小数点后两位。我可以检查正在修改的对象,并且可以在调试器中看到具有正确小数位数的对象,并且我可以对数据库中的值进行硬编码以表明它可以接受正确的小数位数 [在这种情况下,@ 987654323@]。但是当我保存该值时,它永远不会正确保存它,而是将decimal 值截断到小数点后两位。我无法在System.ComponentModel.DataAnnotations 中找到允许您指定精度的类。类(已清理),供参考:

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

【问题讨论】:

    标签: c# decimal ef-code-first


    【解决方案1】:
    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);
        }
    }
    

    【讨论】:

    • 我们需要在哪里添加这个类?
    • 这是我找到的好方法,@Ahmed 你可以将它放在 ApplicationDbContext 或用于数据库模型的上下文中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2013-12-30
    • 2010-09-23
    • 1970-01-01
    相关资源
    最近更新 更多