私たちは、コンソールアプリケーションプロジェクトとWebアプリケーションプロジェクトという2つのプロジェクトからなるソリューションを用意しています。これらはそれぞれスキーマは同一ですが、同じデータベースにアクセスするために使用される.edmxファイルとは異なります。Entity Frameworkエラー - 「EntityContainer名は一意でなければなりません」
コンソールアプリケーションは、Webアプリケーションがホストされているのと同じサーバー上でスケジュールされたタスクとして実行されます。 Webアプリケーションには、コンソールアプリケーションのメソッドが呼び出されるため、Webアプリケーション内の特定のアクションが呼び出されるため、コンソールアプリケーションへの参照が含まれています。 この組み合わせは、ステージング環境で何ヶ月も正常に実行されています。
ライブリリースしたとき、我々は、少なくとも一日一回、次のエラーメッセージが表示されます。指定された
スキーマが有効ではありません。エラー:
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つのエンティティコンテナが互いに競合しているということでしたが、異なる名前を持っていたため「EntityContainer名は一意でなければなりません。 'ProjectEntities'はすでに「混乱している」と定義されています。
このリンク[1]を確認してください:http://stackoverflow.com/questions/4898794/the-entitycontainer-name-must-be-unique-in-different-assemblies、これは私のために働く。私はあなたを助けて欲しい! –