如何使用 EntityFramework 4.1 CodeFirst 防止十进制值在保存时被截断为 2 位? [复制]

Posted

技术标签:

【中文标题】如何使用 EntityFramework 4.1 CodeFirst 防止十进制值在保存时被截断为 2 位? [复制]【英文标题】:How do I prevent decimal values from being truncated to 2 places on save using the EntityFramework 4.1 CodeFirst? [duplicate] 【发布时间】: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; 

【问题讨论】:

【参考方案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 或用于数据库模型的上下文中

以上是关于如何使用 EntityFramework 4.1 CodeFirst 防止十进制值在保存时被截断为 2 位? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

EntityFramework 4.1 Edm元数据模型哈希

如何在 Entity Framework 4.1 中使用更新 SPROC

MVC3 Entity Framework 4.1RC @Html.DropDownListFor 如何实际工作?

EntityFramework 4.1 DbContext 选择添加带有附加字符的 CAST 列

Entity Framework 4.1 中的性能监控选项

Entity Framework 4.1 Code First - 使用 LinqKit PredicateBuilder 时忽略包含