sql >> データベース >  >> RDS >> Oracle

Entity Frameworkが複合キーを使用してテーブルのデータを更新できない(Oracle)

    含めてください:

    • エンティティの定義
    • コンテキストからのマッピングクラス/構成
    • SQLテーブルの定義

    BackPropagateServerGen

    スタックトレースを見ると、重要なのはBackPropagateServerGenです。 。

    Entity Frameworkはデータベースに対して更新を実行していますが、複合キー値の1つ(おそらくCOPY_ID)が実際にはUPDATE呼び出しによって変更されています。このサーバーで生成された値はSQL呼び出しから返され、EntityFrameworkはキー値がその下から変更されていると文句を言っています。

    したがって、COPY_ID複合キー値はサーバーで生成された識別子として定義されていると思いますが、これらの一方または両方が発生しています:

    • エンティティフレームワークがバニラUPDATEに期待するものを妨害しているビューまたはストアドプロシージャにマッピングしています
    • 結果を妨害している1つ以上のトリガーがテーブル、ビュー、またはストアドプロシージャにあります。

    トリガーがある場合は、一時的に無効にして、問題が停止するかどうかを確認します。

    ビューまたはストアドプロシージャにマッピングする場合は、可能であればテーブルに直接マッピングしてみてください。

    コードによって実行されているSQLをキャプチャするために必要なプロファイリングツールを使用します。

    概要

    UPDATE呼び出しは実際にはデータベースに到達していると思いますが、返される結果はキー値を変更し、Entity Frameworkが失敗し、おそらくUPDATEトランザクションをロールバックします(使用しているEFのバージョンによって異なります)。




    1. テーブルの列が作成された日時を検索します

    2. 複合主キーを使用したYiiモデル

    3. SQLiteEXCEPT演算子

    4. NHibernate/MySQL文字列連結