我正在使用Entity Framework 6.1,代码优先。我正在尝试从SQL Server存储/检索小数,但不检索正确的精度。我从.csv文件中读取,处理数据,然后插入数据库。
1.1390
decimal
的值:1.1390
1.139
1.1390
1.1390
1.1300
除了检索值之外,一切正常。我已经尝试过在每个其他SO帖子(下面)中给出的解决方案,但它没有效果。这里出了什么问题?如何以适当的精度检索正确的值?
假设解决方案:
modelBuilder.Entity<ClassA>().Property(p => p.MyDecimal).HasPrecision(19, 4);
检索方法,返回类型ClassA
的精度不正确:
_poRepository.Table.FirstOrDefault(p => p.CompNumberA == compNum &&
p.LineNumber == lineNumber);
两个十进制值之间的比较:
import.MyDecimal != dbValue.MyDecimal
ClassA
:
public class ClassA
{
// properties
public virtual decimal MyDecimal { get; set; }
}
答案 0 :(得分:3)
结果我需要以相同的方式指定精度,但是在ClassA
的流畅映射中。在OnModelCreating()
中指定它没有做到,但在流畅的映射中确实如此。具体做法是:
Property(u => u.MyDecimal).HasPrecision(19, 4);
答案 1 :(得分:0)
在Entity Framework Core中,您可以执行以下操作:
[Column(TypeName = "decimal(19,4)")]
public decimal MyDecimal { get; set; }