Объектно-реляционные модели (ORM) в изолированной среде

Я заинтересован в использовании объектно-реляционного сопоставителя для существующей системы, которая является клиентом ASP.NET, промежуточным уровнем веб-служб ASP.NET и серверной частью Oracle. Весь доступ к базе данных осуществляется с помощью хранимых процедур, и в веб-службах не допускается SQL. Я исследовал NHibernate, ORM TeleAk OpenAccess и Entity Framework. Я назвал это "отдельным", потому что база данных довольно жестко контролируется администратором базы данных. Они также контролируют дизайн базы данных, и доработка базы данных для адекватной нормализации (для объектной модели) в значительной степени исключена. Кроме того, вопрос о том, позволяет ли инструмент создавать любые SQL-запросы.

Мой вопрос: учитывая эти ограничения, какой из этих инструментов позволит наилучшую интеграцию для такого рода среды?

3 ответа

Решение

Вовсе нет.

Вы не собираетесь использовать 99% функциональности ORM, выполняя все операции в хранимых процедурах.

Вероятно, лучше использовать Micro ORM, например ServiceStack.OrmLite или Massive и т. Д.

Но, глядя на любой полноценный ORM, такой как NH, LightSpeed, EF, это полный перебор, и он просто создаст больше сложности для усиления 0.

Реализация вашего доступа к данным с помощью хранимых процедур полностью не означает, что вы не получите никакой пользы от использования ORM. Это просто означает, что вы, вероятно, не будете использовать некоторые из его преимуществ.

Что касается оцененных вами ОРМ, вы, вероятно, уже заметили, что:

  • Все они поддерживают подход Database First, где вы можете просто создать свою модель после того, как база данных уже определена, так что вам не придется вмешиваться в работу администраторов баз данных, кроме как запрашивать учетные данные
  • Entity Framework и OpenAccess обеспечивают визуальное представление вашей модели из коробки, а NHibernate - нет.
  • OpenAccess и NHibernate поддерживают Oracle, в то время как с Entity Framework использование Oracle не так просто
  • Поддержка хранимых процедур в Entity Framework и OpenAccess гораздо сложнее, чем в NHibernate. В OpenAccess вы даже можете сопоставить хранимую процедуру с несколькими наборами результатов.

Надеюсь, это поможет.

Позволь мне понять это правильно. Ваши ограничения:

  • Вы должны использовать ORM
  • Вы не можете изменить базу данных в любом случае.
  • Вы можете использовать только хранимые процедуры.

Я думаю, что согласен с @Phill. Полноценный ORM является излишним, когда вы не можете использовать его функциональность.

Кстати, я когда-то работал над такой системой, где администратор БД управлял местностью и поручал только процедуры для доступа к данным. Кошмарный сон.

Другие вопросы по тегам