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

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

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

Ответы [ 3 ]

3 голосов
/ 27 марта 2012

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

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

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

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

3 голосов
/ 26 марта 2012

Совсем нет.

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

Возможно, лучше использовать Micro ORMкак ServiceStack.OrmLite, или Massive, и т. д. *

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

1 голос
/ 26 марта 2012

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

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

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

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

...