私は大規模な支援が必要です。私は1時間もプロジェクトに費やす時間がないときは、一日を過ごしました。私は、SQLデータ層へのLINQを持っているし、次のコードを使用してDBへの簡単な挿入をしています:私は、データベースの変更を行うことができないため、他のレガシーコードにLinq to SQL NOT NULLを挿入すると "NULL値を挿入できません"
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上で実行されているデータベースであることしかし、このコードはある時点で正常に動作していて、単純に動作を停止しました。
カラム 'ID'、テーブル 'Order'に値NULLを挿入できません。列はNULLを許可しません。 INSERTは失敗します。
コードからわかるように、私がコードをステップ実行するときに私が見ることができるところでは、ID列は有効なID番号を取得しています。 何らかの理由でIDフィールドを設定していても、このコードがより前に正常に機能していても、nullとして挿入しようとしています。私はこれまでデータベースを完全に復元してデータレイヤーを再構築しましたが、役に立たなかったのです。
私は自分自身の横にあるので、これと時間外に困っています。
GetNextOrderId(odc)は例外をスローせずにnullを返す可能性はまったくありません。 – jpm
プロファイラを実行して、どのSQLが生成されてDBに送信されているか確認してみましたか? – kprobst
jpm ... IDは、InsertOnSubmitメソッドに入るまで完全に設定されていますが、null値を送信しようとします。何らかの理由で私の前提に値が設定されていない、オブジェクト全体がnullとして処理されているのですが、なぜその理由が分かりません。この時点では、キャッシュされたバージョンのコードがどこかで使用されていることが原因であると想定しなければなりません。他に何の意味もありません。 – webwires