Вопрос

у меня сложилось впечатление, что

  • EF с POCO:позволяет вам сопоставлять ваши собственные POCO с объектами в модели (.edmx).
  • Только для кода EF: НЕТ edmx / конструктор моделей (ie.Метаданные CSDL/SSDL/MSL (совместно используемые EDMX)).Все еще POCO, но сопоставления, отношения, навигация и т.д. - Это все вручную закодированный (отсюда и описание, содержащее только код).

Если это описание двух концепций (более или менее) правильное, зачем кому-то делать только код вместо EF с POCO?

Оба выполняют POCO, но на 2-м лежит дополнительное бремя необходимости также выполнять сопоставление вручную?

Это было полезно?

Решение

  1. Код хорош только в том случае, если вы хотите написать сопоставление вручную без необходимости копаться в XML.Кроме того, edmx designer становится громоздким после примерно 50 моделей, его использование таким образом становится просто обременительным.

Когда что-то идет не так внутри вашего mapping XML, действительно непросто покопаться в xml, чтобы внести необходимые исправления.Также конструктор прерывается, если вы начинаете вручную редактировать свой xml в определенных сценариях.

Сейчас я не знаю подробностей, но дизайнер в EF1 не поддерживал все доступные параметры отображения.В конструкторе EF4 есть некоторые улучшения (на ум приходят односторонние взаимосвязи ), но я не уверен, что у него есть соответствие функций с ручными сопоставлениями.

  1. ДА.

Другие советы

Единственное, что я бы добавил к ответу jfar, это то, что с помощью Code-Only вы не иметь для создания сопоставлений.

Сопоставления в большинстве случаев могут быть выведены условно.

Точка зрения о предварительной генерации представления важна.Я не слышал, чтобы Microsoft намеревалась предоставлять предварительную генерацию только для кода.Если кто-то знает другое, пожалуйста, напишите.

Я использовал код только для 400 таблиц в рамках исследования того, использовать ли EF4 или NHibernate, и существует начальная задержка в 80 секунд для генерации представления - точно такая же, как при использовании конструктора, но с помощью designer view возможна предварительная генерация, которая сократила задержку до 10 секунд.Если вас не устраивает разделение вашей модели и у вас более 75 таблиц, не используйте только код.

Я не думаю, что в настоящее время Code-Only позволяет вам предварительно генерировать представления, так что это может привести к снижению производительности.Однако это может измениться перед выпуском.

Что-то еще, что не было упомянуто, так это то, что вы получаете полную проверку вашего синтаксиса во время компиляции при использовании только кода.Если вы используете визуальный конструктор с EDMX, вы получаете некоторую проверку во время компиляции, но она ограничена.Для больших моделей EDMX становится крайне неудобным, и ручное написание CSDL, SSDL и MSL - единственный достойный способ управлять чрезвычайно большими моделями с помощью XML-сопоставлений.Вы не получаете никакой проверки во время компиляции, если вручную управляете своими сопоставлениями.

Используя только код, у вас есть преимущество полной проверки во время компиляции моделей любого размера, даже если у вас есть сотни или тысячи объектов, с которыми вам нужно работать.Это также приводит к меньшему "беспорядку", поскольку ваш конечный продукт представляет собой все скомпилированные сборки, а не смесь сборок и различных типов XML-файлов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top