C# EF检索不正确的十进制精度

C# EF检索不正确的十进制精度,c#,entity-framework,C#,Entity Framework,我使用的是实体框架6.1,代码优先。我正在尝试从SQL Server存储/检索十进制数,但未检索到正确的精度。我从.csv文件中读取数据,处理数据,然后插入数据库 .csv文件中的值:1.1390 从导入保存为十进制时的值:1.1390 插入数据库的值:1.139 SSMS中实际存储/显示的值:1.1390 手动运行查询SQL探查器捕获以进行检索时的值:1.1390 EF检索的值:1.1300 除了检索值之外,其他一切都在工作。我已经尝试过其他每个SO帖子(见下文)中给出的解决方案,但没有效

我使用的是实体框架6.1,代码优先。我正在尝试从SQL Server存储/检索十进制数,但未检索到正确的精度。我从.csv文件中读取数据,处理数据,然后插入数据库

  • .csv文件中的值:
    1.1390
  • 从导入保存为十进制时的值:
    1.1390
  • 插入数据库的值:
    1.139
  • SSMS中实际存储/显示的值:
    1.1390
  • 手动运行查询SQL探查器捕获以进行检索时的值:
    1.1390
  • EF检索的值:
    1.1300
除了检索值之外,其他一切都在工作。我已经尝试过其他每个SO帖子(见下文)中给出的解决方案,但没有效果。这里怎么了?如何以正确的精度检索正确的值

假设解决方案:

modelBuilder.Entity<ClassA>().Property(p => p.MyDecimal).HasPrecision(19, 4);
两个十进制值之间的比较:

import.MyDecimal != dbValue.MyDecimal
ClassA

public class ClassA
{
    // properties
    public virtual decimal MyDecimal { get; set; }
}

事实证明,我需要以相同的方式指定精度,但是在
ClassA
的fluent映射中。在
OnModelCreating()
中指定它并没有做到这一点,但在fluent映射中做到了。具体而言:

Property(u => u.MyDecimal).HasPrecision(19, 4);

在Entity Framework Core中,您可以执行以下操作:

[Column(TypeName = "decimal(19,4)")]
public decimal MyDecimal { get; set; }

您如何查看精度“1.1300”?您没有说明您使用的EF方法(例如,代码优先),也没有显示您的模型。似乎没有人能在没有批评的情况下提供帮助info@BradleyUffnerMy检查DB返回的值与.csv文件给出的值之间的差异。比较表明他们是不平等的。当我在断点处查看变量时,Visual Studio将该值显示为
1.1300
。能否显示进行比较的代码?@BradleyUffner Just
import.MyDecimal!=dbValue.MyDecimal
[Column(TypeName = "decimal(19,4)")]
public decimal MyDecimal { get; set; }