web-dev-qa-db-ja.com

エラー3004:行で始まるフラグメントのマッピングの問題

Webサービスをビルドすると、次のエラーが発生します。

エラー3004:行323から始まるフラグメントのマッピングの問題:プロパティJE_TRN_HS.JE_HDR_HSJE_HDR_KEYにマッピングが指定されていません。エンティティはタイプ[TESTCPModel.JE_TRN_HS

これが起こったことです。このエンティティデータモデルは、既存のデータベースから作成しました。 2つのテーブルを追加し、Webサービスを再構築しました。ビルドは成功しました。

次に、2つのテーブル間に関連付けを追加しました。再構築しようとすると、上記のエラーメッセージが表示されて失敗しました!

これがキッカーです!新しく追加したアソシエーションを削除して再構築しました。ビルドは同じエラーメッセージで失敗しました!?このエラーを取り除く唯一の方法は、2番目のテーブルを削除し、2番目のテーブルを再構築して再追加することですか?

私はこの問題の解決策をどこでも探しました!スティーブありがとう

35
Steve Kershaw

私の場合、既存のテーブルを変更することは許可されていませんが、EF4で「モデルに外部キー列を含める」をチェックして新しいテーブルを追加し、テーブルに外部キー関係が含まれていないことを発見しました関連付けがこのエラーをトリガーします。

データベースに存在しないEF4モデルの制約の定義


リンクされた記事が消えた場合、解決策は次のとおりです。

関連付けのプロパティウィンドウを開き、[参照制約]楕円をクリックして、参照制約ダイアログを表示する必要があります。次に、「依存プロパティ」設定の正しいフィールドを選択します。

34
Carlos

私の場合、別の開発者がデータベースのテーブルからフィールドを削除しました。これに気付いたので、エンティティモデルからテーブルを削除して追加し直すと、問題は解決しました。

23
Graham Laight

データベースからモデルにテーブルを単純に追加してから、モデルに新しい関連付けを作成することはできません。デフォルトでは、データベースの対応物にマッピングする必要がある独立した関連付けを使用します=リレーションシップもデータベースに存在する必要があります。 FKアソシエーションとしてリレーションをモデル化する が必要ですが、1対1および1対多のアソシエーションのみが許可されます。関連付けタイプの違いは ここで説明 です。

2
Ladislav Mrnka

私の場合、データベース管理者は列名の変更から大文字から小文字を使用しています。私は問題を解決しましたそのテーブルの更新(データベースからモデルを更新)によって。次に、以前の大文字の列を削除

0

接続文字列を変更した後に「データベースからモデルを更新する」ことになったときに、この問題が発生しました。

エンティティを右クリックし、キーのオンとオフを切り替えることにより、更新が発生したようで、問題が修正されました。これは、Entityフレームワークのバグのようです。

この場合、MySQLコネクタを使用していたことに注意する必要がありますので、一般的にはややこしいと思います。

0
Highstead

[データベースからモデルを更新する]オプションが機能しません。

そのため、ソリューションを正常に修正するには、データベースからモデルを更新する前にすべてのエンティティを最初に削除する必要があります。

0
Willy David Jr

エンティティにマッピングを適用した場合は、問題を解決するテーブルからその列を削除してみてください

0
Vidhya A

私の場合、テーブルのフィールドの名前を変更し、主キーを追加しました。その後、エラーが発生しました。オブジェクト/モデルのリストに移動し、それを削除してデータベースから更新した後、再び同じエラーが発生しました。何回か試しましたが、何もしませんでした。 EFが生成していたクラスは、古いテーブル構造と新しいテーブル構造の混合でした。

しばらく調査した後、これが解決策です。エンティティのダイアグラムに移動します。テーブルを見つけるか、右側でモデルエクスプローラーを開きます(ダイアグラム上で右クリック-モデルエクスプローラーを開きます)。 ... Model、... Model.Storeでモデル/テーブルを検索し、削除します。その後、データベースからテーブルを再度追加し、問題を解決しました。

0
Ramon

モデルにマッピングできないプロパティがある場合、このエラーが発生する可能性があります。

例えば、私はいくつかのLinq2Sql over EF6およびBinaryフィールドでエラーが発生しました。バイナリはSystem.Data.Linqタイプですが、EFの場合はbyte[]。変更すると問題が解決しました。

0
Simon_Weaver

私はこのエラーをLinqpadから受け取っていましたが、なぜ突然発生し始めたのか、そしてコンテキストを使用するアプリケーションでこれが問題になるのかどうかがわかりませんでした。また、最近新しいエンティティによって作成されたクラスを削除した後、.ttファイルを右クリックし、「カーソルまで実行」を押してクラスを再生成しました。それは私のためにそれを修正しました。

0
spatemp

EF 6で同様の問題が発生しました:

exception.InnerException
{"\r\nEntities.EAM.msl(458,10) : error 3004: Problem in mapping fragments starting at line 458:No mapping specified for properties InspectionPdfReportRequest.SyncDate in Set InspectionPdfReportRequests.\r\nAn Entity with Key (PK) will not round-trip when:\r\n  Entity is type [Model.Entities.InspectionPdfReportRequest]\r\n\r\nEntities.EAM.msl(488,10) : error 3004: Problem in mapping fragments starting at line 488:No mapping specified for properties InspectionReportRequest.SyncDate in Set InspectionReportRequests.\r\nAn Entity with Key (PK) will not round-trip when:\r\n  Entity is type [Model.Entities.InspectionReportRequest]\r\n"}
    Data: {System.Collections.ListDictionaryInternal}
    HResult: -2146232032
    HelpLink: null
    InnerException: null

問題は、デザイナーを使用する代わりに、テキストエディターで直接データベースファーストEFアプリケーションの* .edmxファイルを変更したことでした。したがって、テキストの変更を元に戻し、デザイナーを使用して適用すると、エラーはなくなりました。デザイナで保存を押すと、関連する* .mslファイルが更新されます。

0
user8128167