我有一个像这样的 C# Entity Framework 类:
public class Card
{
public decimal CardNumber { get; set; }
}
在数据库中,该值的存储方式如下:
[card_number] [decimal](38, 2) NULL
然后当我去运行这段代码时:
entities.Set<Card>().Add(card);
entities.SaveChanges();
(保存更改应该会失败)
我似乎遇到了这个异常:
Parameter value '2509067194275615035776.00' is out of range.
我尝试在 SQL Server Management Studio 中手动插入该值,它似乎工作正常...
请注意,最近这已从 C# 中的 long 和 SQL Server 中的 bigint
更改为 C# 中的 decimal
和 SQL Server 中的 decimal
SQL 服务器...
我还有这个配置类,看起来像这样,并将 C# 对象映射到数据库...
public class CardConfiguration : TrackedEntityConfiguration<Card>
{
public CardConfiguration()
{
ToTable("Card", "dbo");
Property(c => c.CardNumber)
.HasColumnName("card_number")
.IsRequired();
}
}
我不知道为什么会收到此异常,因为它似乎不大于 SQL Server 中的小数最大值......
我对 Entity Framework 有点陌生,所以也许我在某个地方缺少一些其他配置?
最佳答案
您需要指定小数的精度。例如:
Property(c => c.CardNumber).HasColumnName("card_number").HasPrecision(18, 6);
关于c# - 小数超出范围 C# 和 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73829696/