EF检索不正确的小数精度

vai*_*dil 8 c# entity-framework

我正在使用Entity Framework 6.1,代码优先.我正在尝试从SQL Server存储/检索小数,但不检索正确的精度.我从.csv文件中读取,处理数据,然后插入数据库.

  • .csv文件中的值: 1.1390
  • decimal从导入保存时的值:1.1390
  • 插入DB的值: 1.139
  • 实际存储/显示在SSMS中的值: 1.1390
  • 手动运行SQL Profiler捕获的查询时的值: 1.1390
  • EF检索的价值: 1.1300

除了检索值之外,一切正常.我已经尝试过在每个其他SO帖子(下面)中给出的解决方案,但它没有效果.这里出了什么问题?如何以适当的精度检索正确的值?

假设解决方案:

modelBuilder.Entity<ClassA>().Property(p => p.MyDecimal).HasPrecision(19, 4);
Run Code Online (Sandbox Code Playgroud)

检索方法,返回ClassA精度不正确的类型:

_poRepository.Table.FirstOrDefault(p => p.CompNumberA == compNum && 
                                        p.LineNumber == lineNumber);
Run Code Online (Sandbox Code Playgroud)

两个十进制值之间的比较:

import.MyDecimal != dbValue.MyDecimal
Run Code Online (Sandbox Code Playgroud)

ClassA:

public class ClassA
{
    // properties
    public virtual decimal MyDecimal { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

vai*_*dil 5

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

Property(u => u.MyDecimal).HasPrecision(19, 4);
Run Code Online (Sandbox Code Playgroud)