Выбор ASP.NET MVC и ORM
Мы готовимся к перестройке крупного стареющего внутреннего корпоративного приложения. Мы решили использовать ASP.NET MVC, но на рассмотрении следует выбрать объектное реляционное сопоставление (ORM). Разумеется, существует множество версий с открытым исходным кодом и платных ORM. Тем не менее, NHibernate, похоже, имеет самый большой ум, а Entity Framework - новая горячая точка от Microsoft.
В то время как мы занимаемся исследованиями и обсуждением с обоими мы хотели передать его сообществу относительно того, какие ORM (NHibernate, Entity Framework или иначе) они предпочитают и почему.
Несколько аналогичных вопросов для Stackoverflow
Дополнительное чтение .NET ORM
Ответы
Ответ 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 быстрее