Я понимаю, что этот вопрос был о EF4 , но я уверен, что многие люди, которые только сейчас "делают переход", окажутся здесь через Google и прочтут этот и утвержденный ответ и примут решенияна основе этого, даже если они используют EF5 (или EF4.4, если вы застряли на .Net 4.0)
EF5 позволяет несколько диаграмм на edmx.Это большое дело, по крайней мере для моей команды, потому что оно позволяет нам визуально разделять сущности, не требуя отдельных файлов EDMX.Точки доктора Зима все еще действительны, за исключением (очевидно) «загроможденной дизайнерской поверхности».
Существуют недостатки, связанные с наличием нескольких файлов edmx, самая большая из них заключается в том, что даже если вы создадитеотдельные пространства имен для каждого, вы не можете дублировать имена сущностей.Да, если вы действительно разрабатываете свою систему «сначала код», то это не должно быть проблемой.Однако многие (большинство) из нас добавляют EF к существующим системам, которые уже построены на основе реляционных баз данных, которые имеют нормализацию.
"Но нормализация - это хорошо , верно?"Хорошо, если вы используете реляционную базу данных, да.«Но почему это важно, если я использую EF?»Распространенной «нормализованной» таблицей является Address.Возможный сценарий: компания (место нахождения офиса / офиса) и контакт (может быть «удаленным» работником, поэтому они не находятся в месте нахождения предприятия), и у них обоих есть FK, указывающий на адрес.Используя один файл edmx для компании и один для контакта (даже с разными пространствами имен), которые оба содержат таблицу адресов, код скомпилируется, но во время выполнения вы получите такую красоту:
Multiple types with the name 'Address' exist in the EdmItemCollection
in different namespaces. Convention based mapping requires unique names
without regard to namespace in the EdmItemCollection
Вы можете изменитьотображение, которое используется в EF, но при работе с реализацией возникают другие «проблемы», и большинство людей используют отображение по умолчанию, поэтому на форумах, подобных этому, не будет много соответствующих вопросов и ответов.
Вы также можете переименоватьНазвание модели для таблицы адресов - «ContactAddress» и «CompanyAddress» соответственно, но это создает иллюзию того, что это разные типы, когда на самом деле это не так.Итак, они являются различными типами в EF, но не в базе данных, и, как я сказал, большинство из нас "живут" в мире привязки к EF к существующей системе с существующим хранилищем данных, котороереляционная база данных.
Это уже многословный «ответ», поэтому я на этом остановлюсь.Я просто хотел убедиться, что люди, которые приземлились здесь, потому что искали «множественный edmx» и не осознавали, что между EF4 и EF5 есть существенная разница, были осведомлены и поняли, что им, возможно, потребуется провести еще какое-то расследование.