Подтвердить что ты не робот

Выбор ASP.NET MVC и ORM

Мы готовимся к перестройке крупного стареющего внутреннего корпоративного приложения. Мы решили использовать ASP.NET MVC, но на рассмотрении следует выбрать объектное реляционное сопоставление (ORM). Разумеется, существует множество версий с открытым исходным кодом и платных ORM. Тем не менее, NHibernate, похоже, имеет самый большой ум, а Entity Framework - новая горячая точка от Microsoft.

В то время как мы занимаемся исследованиями и обсуждением с обоими мы хотели передать его сообществу относительно того, какие ORM (NHibernate, Entity Framework или иначе) они предпочитают и почему.

Несколько аналогичных вопросов для Stackoverflow

Дополнительное чтение .NET ORM

4b9b3361

Ответ 1

Вы должны взглянуть на Sharp Architecture в инфраструктуру приложения ASP.NET MVC, которая использует NHibernate.

Я использовал несколько O/RM за последние пару лет, и никоим образом не было ничего другого, кроме NHibernate.

  • Это самый зрелый.
  • Он получил огромный набор функций.
  • У него получилось хорошее сообщество.
  • Он получил некоторые фантастические вспомогательные проекты, такие как Fluent NHibernate.

Я не знаю, какую дополнительную информацию люди смогут предоставить вам и выше в вопросах, с которыми вы связались.

Ответ 2

Сумасшедший ответ: нет.

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

Другая сторона вещей, на которую нужно обратить внимание, - это полное движение NoSQL. Технология по-прежнему немного новая, но для новой работы это стратегия доступа к данным, которую нужно учитывать, поскольку она требует много усилий для создания вашего приложения.

Ответ 3

Короткий ответ: используйте оба (я действительно использую оба)...

С ORM существует несколько возможностей, все зависит от того, что вы хотите.

В качестве реального ORM-картографа я сильно рекоммендую NHibernate и Fluent NH. Вам нужно много исследований, чтобы собрать красивую архитектуру, но тогда на вашем пути ничего не стоит. С минимальными компромиссами вы получаете реальную гибкость.

EF6x (ядро не является готовым IMHO) называется ORM, но то, что оно генерирует, ближе к DAL. Есть кое-что, что вы не можете сделать эффективно с EF6. Тем не менее, это мой любимый инструмент для модели чтения, в то время как я сочетаю его с NHibernate (где NH я использую для модели DDD/write).

Теперь производительность - это всегда pro и минусы. Если вы глубоко углубляетесь в архитектуру ORM (см. Мою статью: избегать вредных привычек ORM), то вы найдете интуитивно способы сделать это быстрее. Вот еще одна статья о том, как сделать EF6x 5x быстрее (по крайней мере, для ситуаций чтения): EF6.x 5x быстрее