2

このコードを実行しています。ローカル開発サーバーでは正常に動作しますが、ライブ サーバーでは動作しません。

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

このクエリをライブ データベースで実行すると、問題なく動作し、エラーは発生しません。

誰がこれを引き起こしているのか考えていますか?

4

2 に答える 2

7

クエリによって返される列の 1 つにNULL、ライブ サーバーのデータベースの値が含まれていますが、開発サーバーの値は含まれていません。ドメイン モデルの対応するプロパティはand not
として定義されているため、その列をnot nullableとしてマークする必要があります。intint?

于 2013-04-22T13:29:13.600 に答える