62

アプリケーションで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で自分で定義する必要がありますか?どのように?

4

10 に答える 10

108

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

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

于 2013-03-10T15:13:49.097 に答える
49

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

EFマッピングが主キーを持たないテーブルで行われる場合、それはビューとして扱われます。ビューは論理エンティティであるため、更新できません。

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

于 2014-03-26T00:31:32.217 に答える
28

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

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

  1. edmxファイルを右クリックし、[プログラムから開く]、[XMLエディター]を選択します。
  2. edmx:StorageModels要素でエンティティを見つけます
  3. DefiningQuery完全に 削除します
  4. store:Schema="dbo"の名前をSchema="dbo"に変更します(そうしないと、コードは名前が無効であることを示すエラーを生成します)
于 2015-01-21T07:19:06.183 に答える
12

私は更新可能なビューでこの問題に遭遇しました。この記事が私の問題を解決したことがわかりました。

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

  1. edmxファイルを右クリックし、[プログラムから開く]、[XMLエディター]を選択します。
  2. edmx:StorageModels要素でエンティティを見つけます
  3. <DefiningQuery>セクションを完全に削除します
  4. store:Schema="dbo"の名前をSchema="dbo"に変更します
  5. store:Type="Views"に変更store:Type="Tables"
于 2017-07-11T14:47:50.240 に答える
4
  1. edmxファイルを右クリックし、[プログラムから開く]、[XMLエディター]を選択します。

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

  3. DefinitionQueryを完全に削除します

  4. 名前をに変更store:Schema="dbo"Schema="dbo"ます(そうしないと、名前が無効であるというエラーがコードで生成されます)これらの手順は私にとってはうまくいきました

于 2015-12-24T12:27:13.797 に答える
4

私のテーブルには、SQLテーブルデザインの主キーがありませんでした。それを追加して解決しました。

于 2018-02-02T11:02:40.177 に答える
2

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

于 2017-01-07T18:24:37.147 に答える
2

**テーブルにPKがないことを再確認してください:**主キーを追加してから、テーブルを削除してedmxに再度追加すると、機能するはずです。

于 2017-05-15T15:49:12.643 に答える
1

テーブルで主キーを処理していない場合、この問題は、レコードデータベースの更新と挿入中にMVCで確実に発生します

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

于 2017-05-21T14:52:15.977 に答える
0

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

于 2017-10-12T14:43:35.307 に答える