web-dev-qa-db-ja.com

これは、DefiningQueryがあり、<ModificationFunctionMapping>要素に<InsertFunction>要素が存在しないためです。

アプリケーションでEFを使用しています。

新しいレコードをマッピングテーブルに保存\挿入しようとしています

そして、次のエラーを取得します。

Unable to update the EntitySet 'UsersLimitationToCountry' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.

Edmxで自分で定義する必要がありますか?どうやって?

51
Elad Benda

多対多のマッピングテーブルにPKがありませんでした

追加され、問題は解決されました。

88
Elad Benda

受け入れられた答えに同意しました。その背後にある理由を提供するだけです...

プライマリキーを持たないテーブルでEFマッピングが行われた場合、ビューは論理エンティティであると見なされ、更新できません。

そのため、不足している主キーをurテーブルに追加するか、それらを表示と見なし、更新操作を実行しないでください。

37
Biki

ビューが更新可能な場合、.edmxのStorageModelセクション内のビューのEntitySet定義から要素を削除するだけで、通常の更新処理は他のテーブルと同様に機能します。

これは私の場合です。単に削除すると、別のエラーが発生しました。最後の投稿を除き、この投稿の手順に従いました。あなたの便宜のために、私は次のように問題を解決するために私が従った投稿から4つのステップをコピーしました:

  1. Edmxファイルを右クリックし、[開く]、[XMLエディター]を選択します。
  2. Edmx:StorageModels要素でエンティティを見つけます
  3. DefiningQueryを完全に削除します
  4. Store:Schema = "dbo"の名前をSchema = "dbo"に変更します(そうでない場合、コードは名前が無効であるというエラーを生成します)
26
kavitha Reddy

更新可能なビューでこの問題に遭遇しました。見つかった この記事 私の問題を解決しました。

したがって、ビューの基礎となるテーブルには主キーが定義されていますが、EFはエンティティがビュー上に構築されたため、どの列がPKにあるかを知りません。ここでのコツは、ビューをテーブルとして更新できることをEFに「納得させる」ことです。手順は上記の回答で述べたものとほぼ同じです。

  1. Edmxファイルを右クリックし、[開く]、[XMLエディター]を選択します。
  2. Edmx:StorageModels要素でエンティティを見つけます
  3. <DefiningQuery>セクションを完全に削除します
  4. Store:Schema = "dbo"の名前をSchema = "dbo"に変更します。
  5. store:Type="Views"store:Type="Tables"に変更します
7
wctiger
  1. Edmxファイルを右クリックし、[開く]、[XMLエディター]を選択します。

  2. Edmx:StorageModels要素でエンティティを見つけます

  3. DefineingQueryを完全に削除する

  4. store:Schema="dbo"の名前をSchema="dbo"に変更します(そうしないと、コードは名前が無効であるというエラーを生成します)

4
user3452580

私のテーブルには、SQLテーブルの設計で主キーがありませんでした。追加して解決しました。

3
Rajdeep

**テーブルにPKがないことを再確認してください:**主キーを追加してから、edmxにテーブルを削除して再追加するだけで動作します

2
Moji

外部キーテーブルに、参照テーブルの列と一致する列名が複数ないことを確認してください。参照表と参照表の間で主キーのみが一致する必要があります。 0..1には識別列名が必要です。参照および参照先のテーブルに複数の一致する列名がないことを保証する列の命名規則を作成してください。 ALMwConsult.net提供

1
Duncan Kuffar

テーブルで主キーを処理していない場合、レコードデータベースの更新および挿入中にMVCでこの問題が必ず発生します。

DbUpdate例外はユーザーによって処理されませんでした

1
bajran

Db first mvcアプリケーションでの作業。問題は、テーブルの主キーを定義するのを忘れていたことです。 alterコマンドを使用して主キーを追加し、DAL(edmx)を更新することで解決しました

0
Hafte Nigus