0

「削除」メソッドを使用して、コンテキストからオブジェクトを削除しようとしています。しかし、次のように言って UpdateException が発生します。

ORA-01407: ("NAMUR_TEST_ALERTE"."TX_HST_TRACE_DATA"."TRD_ID_INFO_TRACE") を NULL に更新できません

TRD_ID_INFO_TRACE は私の外部キーです。

ここに私のクエリ linq があります:

List<Trace> query = (from t in Repository.DataContext.Trace                                          
                                     .Include("Datas")
                                      select t).ToList<Trace>();

インクルード命令を抑制した場合。それは正常に動作します。

しかし、これはデータを取得し、シリアル化を使用して保存し、最後にデータベースから削除することを目的としているため、できません。

インクルードを保持したまま削除するにはどうすればよいですか?

前もって感謝します !

4

1 に答える 1

1

問題は、モデルがカスケード削除用に構成されていないが、データベースがおそらく構成されていることです。モデルがカスケード削除用に構成されていない場合、プリンシパル エンティティを削除すると、依存エンティティの FK が強制的に null に設定され、この変更が更新としてデータベースに送信されます。

これを解決する方法の 1 つは、EDMX または ftuent API でリレーションを構成して (規則によるマッピングのデフォルトである必要があります)、カスケード削除を行うことです。もう 1 つの方法は、トレース インスタンスを削除する前に、関連するすべてのデータ インスタンスをコードで削除することです。

于 2012-05-22T10:39:49.203 に答える