У нас есть решение, которое состоит из двух проектов - проекта консольного приложения и проекта веб-приложения. Каждый из них имеет идентичную схему, но по-разному называется .edmx-файлом, используемым для доступа к одной и той же базе данных.Ошибка Entity Framework - «Имя EntityContainer должно быть уникальным»
Консольное приложение запускается как запланированное задание на том же сервере, что и веб-приложение. Веб-приложение содержит ссылку на консольное приложение, так как определенные действия в веб-приложении приводят к методам вызова вызываемого приложения. Эта комбинация успешно работает в нашей промежуточной среде в течение многих месяцев.
При отпускании жить мы видим следующее сообщение об ошибке, по крайней мере один раз в день:
Схема Указан недопустимый. Ошибки:
ProjectName.csdl (3,4): Ошибка 0019: Имя EntityContainer должно быть уникальным . EntityContainer с именем «ProjectEntities» уже указан . ProjectName.csdl (63,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа 'ProjectModel.DataSource' уже было определено . ProjectName.csdl (75,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа 'ProjectModel.Error' уже было определено .
Это продолжается, перечисляя все имена типов в нашей схеме.
Эта ошибка может быть устранена путем утилизации пула приложений или перезапуска IIS.
Обратите внимание, что ошибка не возникает, пока веб-приложение не работает некоторое время - это не происходит при компиляции или при первом обращении к приложению.
Моя первоначальная теория заключалась в том, что два контейнера Entity Containers конфликтуют друг с другом, потому что веб-приложение ссылается на консольное приложение, но они имеют разные имена, что делает ошибку «Имя EntityContainer должно быть уникальным. EntityContainer с именем «ProjectEntities» уже определен «запутанный.
Проверьте эту ссылку [1]: http://stackoverflow.com/questions/4898794/the-entitycontainer-name-must-be-unique-in-different-assemblies, это работает для меня. Надеюсь, вам поможет! –