2

私は非常に助けが必要です。プロジェクトに費やす時間は 1 時間もありません。Linq to SQL データ レイヤーがあり、次のコードを使用して DB に単純な挿入を行っています。

 using (var odc = new OrdersDataContext())
        {
            try
            {
                var id = GetNextOrderId(odc);
                order.ID = id;
                odc.tblOrders.InsertOnSubmit(order);
                odc.SubmitChanges();
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
        }

他のレガシー コードと、これが SQL 2000 で実行されているデータベースであるため、データベースを変更することはできませんが、このコードはある時点で正常に機能していましたが、その後単に機能しなくなりました。それは言っている:

値 NULL を列 'ID'、テーブル 'Order' に挿入できません。列はヌルを許可しません。INSERT は失敗します。

しかし、コードからわかるように、コードをステップ実行すると明確にわかるように、ID 列は有効な ID 番号を取得しています。何らかの理由で、ID フィールドを設定しているにもかかわらず、このコードが以前は正常に機能していたにもかかわらず、それを null として挿入しようとしています。データベースを完全に復元し、データ層を再構築するところまで行きましたが、役に立ちませんでした。

私はこれにとても困惑していて、時間がないので我を忘れています。

4

1 に答える 1

1

したがって、これに対する答えは非常に奇妙で、その理由について 100% 確信があるわけではありません。基本的に、私が行ったことは、LINQ to SQL データ レイヤーを完全に再構築し (デザイナーで同じテーブルをドラッグ アンド ドロップするだけです)、ソリューション全体を完全にクリーニングして再構築することでした。その後、コードは魔法のように再び機能しました。コードの変更は必要ありません。

何らかの理由で、コードが不適切にキャッシュされたため、オブジェクトをデータ層に転送できませんでした (私の推測です)。その場合に戻るのは奇妙なエラーのようです。

于 2011-06-28T02:29:51.583 に答える