Int属性以小数形式出现吗?导致错误

本文关键字:错误 属性 小数 Int | 更新日期: 2023-09-27 17:53:34

我有一行代码,我收到以下错误:

无法将'Series50Order'上的'OPSPackageID'属性设置为a的系统。十进制的值。必须将此属性设置为非空值

我在这行收到错误:

var order = series50.Orders.Where(s => s.EnrollmentCardNumber == id.ToString()).FirstOrDefault();

这是奇怪的,因为错误似乎非常直接,但当我查看我的Series50Order模型时,它已经设置为int:

public int OPSPackageID { get; set; }

我也试着把它变成Int32,仍然是同样的错误:

public Int32 OPSPackageID { get; set; }

SQL server中的字段是数字,没有小数。为什么会收到这个错误呢?

Int属性以小数形式出现吗?导致错误

如下MSDN文档所述,SQL Server中的数字和十进制列类型是同义词,可以互换使用。这意味着它们都是精度类型,无论是否使用精度,也无论存储的值是否是整数,都不能反序列化为整数。

因此,您有两个选择:

。将目标属性更新为小数

public decimal OPSPackageID { get; set; }    

b。每次使用传入列时,手动将其转换或强制转换为int,不建议这样做,因为当来自数据库时,这会导致精度损失,并且当存储在数据库时,可能会导致溢出。