不能将null值分配给类型为System的成员.Int32,它是一个不可为null的值类型

本文关键字:类型 null 一个 成员 分配 System 不能 Int32 | 更新日期: 2023-09-27 18:10:24

运行此代码。在本地开发服务器上运行良好,但在实时服务器上则不然。

try
{
    var qq =
    db.tblConstructReleaseDownloads
    .Where(c => c.UserID.HasValue && c.UserID.Value == userID)
    .OrderBy(c => c.DateStarted)
    .ThenBy(c => c.ReleaseID);
    var query = db.GetCommand(qq).CommandText;
    HttpContext.Current.Response.Write(query + "<br><br>");
    foreach (var d in qq)
    {
        HttpContext.Current.Response.Write("ID:" + d.ID + "<br>");
    }

这引发了错误:

The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.

它打印出的命令文本是:

SELECT     ID, ReleaseID, IP, DateCompleted, BytesServed, UserID, DateStarted, BytesPerSecond, TrackerVisitID
FROM         tblConstructReleaseDownloads AS t0
WHERE     (UserID IS NOT NULL) AND (UserID = @p0)
ORDER BY DateStarted, ReleaseID

我在实时数据库上运行了这个查询,它运行良好,没有错误。

有人知道是什么原因造成的吗?

不能将null值分配给类型为System的成员.Int32,它是一个不可为null的值类型

查询返回的其中一列在活动服务器上的数据库中包含NULL值,但在开发服务器上不包含
因为域模型中的相应属性被定义为int而不是int?,所以应该将该列标记为不可为null

如果您正在使用MVC,请检查您的模型。在检查模型并将int值更改为Nullable int之前,我花了大约3个小时来解决这个问题。