В последнее время я изучал доступные ORM на основе .NET. Я заметил, что каждый оказывается в одном или двух лагерях. В одном лагере сначала создается база данных, а ORM обеспечивает более простой способ доступа к базе данных в приложении. Во втором лагере объектная модель существует первой, и ORM способствует сохранению объектной модели в базе данных.
Сейчас я не спрашиваю и не утверждаю, лучше ли один лагерь, чем другой. Я определенно вижу причины для каждой методологии проектирования. Что меня расстраивает, так это то, что из всех руководств и документов по «началу работы», которые я читал в последнее время, ни один из них не выходит просто и говорит в самом начале: «Этот инструмент предполагает, что вы начинаете с существующей базы данных / объектной модели». Для меня это очень важно для того, будете ли вы использовать один ORM против другого.
Итак, после кучи чтения и создания пары проектов «Hello World» я собрал серию пунктов по рабочим процессам, поддерживаемым ORM, которые я изучил. Может ли кто-нибудь, имеющий опыт работы с этими инструментами, сказать мне, сделал ли я какие-либо неправильные утверждения или полностью пропустил какие-либо действительно важные моменты. В частности, мне бы очень хотелось знать, верны ли мои предположения о том, должна ли схема базы данных или объектная модель быть первой в каждом инструменте.
Linq To SQL
- База данных должна существовать первой
- Работает только с SQL Server
- Класс DataContext используется для чтения / записи между классами и базой данных.
- DataContext может восстанавливать реальные физические классы или динамические типы могут использоваться для автоматического создания типов на основе схемы базы данных.
- Отображение значений по умолчанию для сопоставления имен таблиц с имена классов,
- Вызов конструкторов классов автоматически создает записи в базе данных
- При изменении значений свойств автоматически обновляется база данных.
Дозвуковой (простой репозиторий)
- Структура классов должна быть первой
- Работает с рядом технологий баз данных
- Класс репозитория создается и подключается к базе данных
- Схема базы данных создается и обновляется автоматически, когда классы добавляются в репозиторий.
repo.Add (instance);
- Репозиторий использует отражение для создания / обновления схемы базы данных
- Создание таблицы для каждого раза и столбца для каждого свойства
NHibernate
- Любая база данных или сначала можно создать структуру класса
- Отображение может быть создано для сопоставления новой структуры классов с существующей базой данных.
- Отображение может использоваться для автоматического создания схемы базы данных
- Работает с рядом технологий баз данных
- Классы внутри окончательной сборки приписываются настройкам отображения NHibernate, которые отображают классы и свойства в таблицы и столбцы
- Есть два метода для добавления конфигурации отображения
- XML-файлы, встроенные в двоичный файл,
.hbm.xml
- Атрибуты, добавленные в код
- Поддерживает расширенную конфигурацию сопоставления, включая один к одному, один к одному, многие к одному, многие к многие, наследование и т. д. л и т. д.
задан Diego Mijelshon 15 September 2010 в 20:24
поделиться