如何使用 EntityFramework 4.1 CodeFirst 防止小数值在保存时被截断为 2 位?

发布于 2024-11-19 07:10:50 字数 617 浏览 1 评论 0原文

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

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

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

Possible Duplicate:
Entity Framework Code First: decimal precision

I'm using Linq-to-Entities with the EntityFramework 4.1 Code First system. All of my decimal properties are being truncated to two decimal places on save. I can examine the object being modified and can see in the debugger that is has the right number of decimal places and I can hard code the value in the database to show that it can accept the right number of decimal places [in this case, decimal(4,3)]. But when I save the value, it never saves it correctly, but instead truncates decimal values to two decimal places. I haven't been able to find a class in System.ComponentModel.DataAnnotations that allows you to specify precision. The class (sanitized), for reference is:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

琴流音 2024-11-26 07:10:50
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);
    }
}
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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文