gpt4 book ai didi

c# - EF6 - 从 decimal 到 int32 的无效转换

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:25 25 4
gpt4 key购买 nike

我有一些表,其中的字段定义为...

...
[oneField] NUMERIC(2) NULL,
...

以及相应的c#实体模型...

...
public int? oneField { get; set; }
...

流畅的配置...

Property(r => r.oneField)
.HasColumnName("oneField");

好了,有了上面的所有这些,我在从数据库中检索数据时遇到了以下异常。

System.InvalidOperationException: The specified cast from a materialized
'System.Decimal' type to a nullable 'System.Int32' type is not valid.

有什么办法可以解决这个问题吗?我可以理解,如果 NUMERIC 字段有可能导致问题的小数部分,但它只是一个 2 位数的整数值,为什么不能转换为 INT32?

注意:我知道如果我将表中的字段更改为 INT 问题将得到解决,但我想保留 NUMERIC(2),因为它更好地代表了要存储在那里的值 ( 2 位数字)。

最佳答案

如果您想使用NUMERIC(2),那么您需要一个decimal 模型属性,否则您将看到报告的转换错误。所以你的解决方案是改变数据库或改变你的模型。

但是,NUMERIC(2) 对您的目的来说有点矫枉过正,它会占用 5 个字节,而您只需要 99 以下的数字。相反,您应该考虑使用 TINYINT。这将允许您存储从 0 到 255 的数字。这意味着存储只是一个字节,您的模型可以 byte 匹配。

关于c# - EF6 - 从 decimal 到 int32 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50620655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com