Какой ORM я должен использовать для проекта ASP.Net MVC? - PullRequest
7 голосов
/ 30 марта 2009

Я начинаю новый проект ASP.Net MVC и мне было интересно, какой лучший подход к модели использовать.

Большинство демо-версий рекомендуют LinqToSQL, но я знаю, что Microsoft на самом деле не совершенствует этот продукт и больше фокусируется на Entity Framework.

Мне нравится подход Subsonic, но я думал, что он будет встроен в MVC с версией 3, но о стадии разработки этого проекта не было никаких новостей, поэтому я немного опасаюсь использовать версию 2, если есть необходимость скоро будет новый релиз.

Я слышал о NHibernate и Castle Record, но не имел никакого опыта с ними и слышал многочисленные плюсы и минусы для обоих.

Любая помощь очень рекомендуется!

Ответы [ 9 ]

11 голосов
/ 30 марта 2009

Кривая обучения nHibernate выше, но оно того стоит. Используйте Fluent nHibernate, чтобы немного облегчить боль. nHibernate менее нагляден, чем некоторые ORM, но это действительно проблема, только когда вы начинаете, и когда у вас есть опыт работы с ним, отсутствие визуального дизайнера является преимуществом IMO.

6 голосов
/ 01 апреля 2009

Для SubSonic Роб просто выпускает новый шаблон MVC, который вы можете использовать при запуске нового проекта, который вносит много хорошего в новый проект MVC, включая предварительную версию SubSonic 3. Detais доступны на Блог Роба Конери .

4 голосов
/ 30 марта 2009

LLBLGenPro прекрасно работает для меня. Это лучший .net ORM. Я бы избегал Linq to Sql, потому что у вас будут проблемы, когда проект будет расти, и он будет довольно слабым по своим возможностям (помимо очевидных недостатков, например, работает только с SQL Server и т.

2 голосов
/ 30 марта 2009

Если вы готовы потратить немного денег или иметь меньший проект, я бы по крайней мере попробовал LightSpeed ​​. Я обнаружил болевые точки в очень ORM, который я когда-либо пробовал, и в настоящее время я использую LINQ для SQL самостоятельно.

LightSpeed ​​довольно богатый набор функций, хотя в поддержке LINQ отсутствует несколько функций, ничего особенного, с чем нельзя обойтись. Он очень похож на LINQ to SQL и LINQ to Entities, но имеет несколько дополнительных функций, таких как полнотекстовый поиск.

2 голосов
/ 30 марта 2009

Я использую linq2sql, и я думаю, что он прекрасно работает, если вы используете MSSQL в качестве базы данных (он работает и на других базах данных, но требует некоторых сторонних инструментов). Да, Microsoft «прекратила» свою разработку, но она достаточно зрелая для обычного проекта. Я сомневаюсь, что вы столкнетесь с любыми стенами. Если вы начинаете большой проект, который вам необходимо поддерживать на долгие годы, тогда Entity Framework может быть более подходящим.

Я лично раньше не использовал NHibernate и Subsonic, но, как говорит Крейг, кривая обучения NHibernate немного более крута, хотя она должна быть отличной основой (все, что я слышал или читал).

1 голос
/ 31 марта 2009

Мы используем Fluent + NHibernate здесь, он работает довольно хорошо. Некоторые альтернативы, которые хорошо сочетаются, - это SubSonic, Entity Framework и Linq to SQL. Я думаю, что прямой NHibernate немного более громоздок, чем стоит, но он является отличным базовым слоем для Castle ActiveRecord и Fluent.

1 голос
/ 31 марта 2009

Замок ActiveRecord действительно хорошо работает для небольших и средних проектов, основанных на MVC - я сейчас использую его для нескольких проектов и считаю его очень подходящим для ASP.NET MVC .

Это реализация шаблона активной записи , который использует NHibernate под капотом - другими словами, если вы довольны наличием одного класса на таблицу базы данных, он будет выполнять большую часть NHibernate Конфигурация для вас, оставляя вам свободно писать код, как:

Customer bob = Customer.Find(/* customer Id goes here */);
bob.FirstName = "Robert";
bob.Save();

Invoice newInvoice = new Invoice();
newInvoice.Products.Add(Product.Find(/* product ID goes here */);
bob.Invoices.Add(newInvoice);
bob.Save();

с очень маленькой явной конфигурацией NHibernate (конечно, при условии, что в вашей БД есть таблицы Customer, Invoice и Product)

Поскольку это NHibernate под капотом, переход на NHibernate, если вам нужно, должен быть простым - у вас уже есть все необходимые ссылки и библиотеки. Есть несколько аспектов поведения NHibernate, которые вы не можете игнорировать (например, области видимости сессий и сброс ) - но не так уж сложно разобраться, что с ними происходит, и использовать они в ActiveRecord помогут вам начать, если / когда вам нужно будет перейти непосредственно к использованию NHibernate.

0 голосов
/ 30 марта 2009

Если это не большой проект, я бы использовал Linq To SQL. Если вам нужны все колокольчики и свистки, сделайте ставку на nHibernate и сделайте это. Я не думаю, что вы столкнетесь с какими-либо серьезными проблемами, так или иначе.

0 голосов
/ 30 марта 2009

Я работал с продуктом netTiers (http://www.nettiers.com/) в проекте, и он работал очень хорошо. Это скрипт CodeSmith, который генерирует бизнес-объекты из таблиц вашей базы данных, представлений и хранимых процедур.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...