Если вы используете устаревшие базы данных, вы найдете инструменты ORM довольно сложными в использовании, настройке, обслуживании и оптимизации. Мы столкнулись со многими проблемами, когда использовали NHibernate для сопоставления нашей доменной модели с существующей базой данных. Некоторые из них были:
Объекты модели было трудно сопоставить с существующими таблицами (у нас было более 100 таблиц), некоторые требования NHibernate были довольно навязчивыми, так как каждая таблица должна иметь поле идентификатора, чтобы иметь возможность сопоставления с объектом Domain , Кроме того, сопоставление многих со многими отношениями было довольно трудно понять и использовать.
Поддержание большого объема
сопоставление XML требуется для сопоставления с
устаревшая база данных стала полноценной
работа для разработчика и была довольно
вызов, особенно в команде
10+ разработчиков.
Производительность наших запросов снижалась по мере роста сложности, поскольку модель данных и объектная модель не всегда соответствовали бизнесу и требовали постоянной настройки. Большой объем кода агрегации данных должен был быть написан. Например, если нам нужно было показать сетку, объединяющую несколько таблиц, мы обычно загружали несколько объектов Domain, складывали их вместе и отображали в одной сетке. Этот код было сложно поддерживать и отлаживать.
Кроме того, иногда нам приходилось запускать анонимные запросы, то есть когда мы просто хотели получить несколько свойств от некоторых объектов, а не от целых объектов. Это было действительно сложно писать, поддерживать и даже реализовывать, и это противоречило парадигме ORM, но у нас не было другого выбора, кроме как сделать это.
Другая проблема, с которой мы столкнулись, заключалась в том, что база данных постоянно менялась, поскольку администраторы баз данных реорганизовывали таблицы, и это всегда нарушало наши объекты домена. Это было упражнение, чтобы синхронизировать модели и таблицы, а также убедиться, что приложение все еще работает.
Короче говоря ... То, что мы узнали, что если бы был способ сопоставить SQL, который нужен бизнесу, прямо с объектами UI Model или Domain, не беспокоясь о конфигурации, это было бы лучшим решением.
После прохождения этого опыта мы разработали Orasis Mapping Studio. Это инструмент отображения, специально разработанный для работы с устаревшими базами данных, а также с существующими объектами .NET Model / Domain. Он принимает ваши запросы SQL и позволяет вам сопоставить их с вашими существующими объектами .NET, графически отображая метаданные запроса и объекта и используя перетаскивание для создания сопоставлений между свойствами объекта и столбцами запроса. Инструмент автоматически генерирует весь код ADO.NET, который вам понадобится для сопоставления ваших объектов. Затем вы можете использовать сгенерированный код на вашем уровне DAL или использовать сгенерированную сборку для извлечения и сохранения ваших данных.
Вы можете попробовать это здесь: Orasis Mapping Studio . Это инструмент, который, на наш взгляд, действительно нужен разработчикам, особенно для работы с устаревшими базами данных, где производительность является ключевым требованием. Он написан разработчиками для разработчиков, поэтому он обрабатывает некоторые сложные детали, такие как наследование объекта, вложенные объекты, преобразования типов данных и т. Д. Удачи!