Какой ORM поддерживает отображение существующих баз данных? - PullRequest
2 голосов
/ 09 сентября 2010

Итак, у меня есть многоуровневое приложение для проверки концепции ASP.NET MVC с хорошим разделением между презентациями, бизнес-логикой и инфраструктурой. Прямо сейчас он работает вне поддельного хранилища (то есть LINQ-запросов к статическим объектам IQueryable). Я хотел бы сейчас создать функциональный репозиторий SQL.

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

Есть ли у вас предложения, какие ORM / инструменты отображения я должен рассмотреть и / или избежать?
У вас есть предложения для статей / книг, на которые я мог бы обратить внимание, чтобы помочь мне подойти к этой теме?

Было бы лучше просто использовать параметризованные запросы в этом сценарии?

Ответы [ 3 ]

7 голосов
/ 09 сентября 2010

Entity Framework в версии 4 определенно позволит вам:

  • иметь отображение между физической схемой базы данных и вашей концептуальной схемой, например, иметь сопоставленный объектк нескольким таблицам или нескольким таблицам, соединенным вместе, образуя единый бизнес-объект

  • захват данных из представлений (вместо таблиц напрямую)

  • использование сохраненопроцедуры (где это необходимо и уместно) для INSERT, UPDATE, DELETE для каждого объекта

4 голосов
/ 09 сентября 2010

NHibernate звучит как хорошо подходит для того, что вы ищете.Вы сможете заставить свои репозитории вызывать запросы либо на HQL, либо с помощью API, в любом случае вы можете добраться до своей базы данных и настроить данные так, чтобы они соответствовали способу использования вашего репозитория.Хотя всегда будет трудно сделать квадратный колышек вписанным в круглое отверстие.У SO много приятной поддержки, когда вы начинаете использовать NHibernate, удачи.

1 голос
/ 09 сентября 2010

Как вы упомянули в вопросе, очень спорно выбрать ОРМ.У разных людей будут разные потребности в проекте.Я не совсем уверен, что будет для вас приоритетным.Вот что я попробовал сам.

Кажется, что NHibernate является наиболее часто используемым ORM в проектах DotNet.Я чувствую, что это страдает от типичной проблемы с открытым исходным кодом.Он предлагает так много функций, но документация действительно отстой.Если у вас есть много времени в вашем распоряжении, вы можете дать ему шанс.

Другой вариант - использовать Entity Framework.Его очень легко установить и запустить.С версией 4.0 и CTP есть условие для кода сначала, а также свободное отображение и конфигурация.Поскольку вы сказали, что хотели бы разделить модель предметной области, EF 4 поможет вам, потому что у нее есть понятие концептуальной модели, которая является абстракцией над уровнем отображения.

Вы можете обратиться к нескольким ссылкам ниже дляблоги, которые я написал, основываясь на моем опыте http://nileshgule.blogspot.com/2010/08/entity-framework-hello-world.html http://nileshgule.blogspot.com/2010/09/nhibernate-code-first-approach-with.html http://nileshgule.blogspot.com/2010/09/entity-framework-first-query-using.html http://nileshgule.blogspot.com/2010/09/entity-framework-learning-series.html

...