Entity Frameworkのエラー - "EntityContainer名は一意である必要があります"

.net entity-framework exception-handling visual-studio

質問

コンソールアプリケーションプロジェクトとWebアプリケーションプロジェクトの2つのプロジェクトで構成されるソリューションがあります。これらはそれぞれスキーマが同じですが、同じデータベースにアクセスするために使用される名前が異なる.edmxファイルです。

コンソールアプリケーションは、Webアプリケーションがホストされているのと同じサーバー上でスケジュールされたタスクとして実行されます。 Webアプリケーション内の特定のアクションによってコンソールアプリケーション内のメソッドが呼び出されるため、Webアプリケーションにはコンソールアプリケーションへの参照が含まれています。この組み合わせは私たちのステージング環境で何ヶ月もの間うまく実行されています。

ライブリリース時には、少なくとも1日1回、次のエラーメッセージが表示されています。

指定されたスキーマが無効です。エラー:

ProjectName.csdl(3,4):エラー0019:EntityContainerの名前は一意である必要があります。 'ProjectEntities'という名前のEntityContainerは既に定義されています。 ProjectName.csdl(63,4):エラー0019:スキーマ内の各型名は一意である必要があります。型名 'ProjectModel.DataSource'は既に定義されています。 ProjectName.csdl(75,4):エラー0019:スキーマ内の各型名は一意である必要があります。型名 'ProjectModel.Error'は既に定義されています。

これは続き、私たちのスキーマの中のすべての型名をリストします。

このエラーは、アプリケーションプールをリサイクルするかIISを再起動することで解決できます。

Webアプリケーションがしばらく実行されるまでエラーが発生しないことに注意してください - それは私達がコンパイルするときまたは私たちがアプリケーションに初めてアクセスするときに発生しません。

私の最初の理論は、Webアプリケーションがコンソールアプリケーションを参照しているために2つのEntity Containersが互いに競合していることですが、名前が異なるため、 "EntityContainer名は一意である必要があります。 「混乱している」と既に定義されています。

人気のある回答

そのbinフォルダに移動し、dllファイルとpdbファイルを手動で削除します。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ