Ответ 1
NHibernate с Linq to NHibernate
Я ищу ORM, который предлагает полную или почти полную поддержку LINQ.
LINQ to SQL
- Поддерживает все внутри LINQ (.Contains, Math.Log и т.д.)
- Невозможно удовлетворить свойства отношения нагрузки без создания нового datacontext
ADO.NET Entity Framework
- Ужасная поддержка LINQ (много недостающих функций).
- Отличные функции отображения
- Может требовать загрузки по запросу с помощью .Include методов в ObjectQuery < >
LightSpeed
- Большая поддержка LINQ пропускает некоторые функции (.Contains in a Where)
- Некоторые из сгенерированных SQL очень неэффективны.
Ни один из них, похоже, не подходит просто отлично, я, честно говоря, хочу, чтобы я мог брать кусочки от каждого. Мне лично очень нравится ADO.NET EF, за исключением тех недостатков, которые у него отсутствуют, поэтому просто разочаровывает их использование.
Я знаю, что некоторые люди хвалят NHibernate вверх и вниз, и я не сбиваю его, но сегодня я провел тестирование, и это нормально, но поддержка LINQ не так уж хороша.
NHibernate с Linq to NHibernate
Попробуйте DataObjects.NET. Я один из разработчиков DO. И моя последняя работа в этом проекте - реализовать LINQ для DataObjects. Поэтому я мог бы кратко описать это:
У нас около 1000 тестов реализации LINQ, и 99% из них переданы. Поэтому могу сказать, что текущая реализация близка к EF. Некоторые методы не работают с EF, некоторые с нашей картой. Проверьте это краткое описание http://www.x-tensive.com/Products/DO/.
У Llblgen, похоже, довольно хорошая поддержка linq. У Франса есть целая серия сообщений в блогах о его развитии http://weblogs.asp.net/fbouma/archive/2007/09/11/developing-linq-to-llblgen-pro-day-0.aspx
OpenAccess http://www.telerik.com/products/orm.aspx
DataObjects.Net имеет почти полную поддержку LINQ.
Новейшая версия 3.0 SubSonic была скоррелирована переписана вокруг использования Linq - http://subsonicproject.com/docs/3.0_Summary
У меня были те же проблемы с EF. Я хотел использовать его для его отображения, но отказался от него из-за отсутствия хорошей поддержки linq.
Я не уверен, что вы подразумеваете под активными свойствами отношения нагрузки, но вы можете с нетерпением загружать простой linq-2-sql.
Вы используете LoadOptions.LoadWith<T>(expression).
Signum Framework имеет провайдера linq, http://www.signumframework.com/DatabaseQuery.ashx и имеет совершенно другой способ загрузки прав. Нет datacontext.
Он отлично работает с новыми приложениями.
Геном O/RM использует LINQ для создания слоев доступа к данным, соединяющих реляционные системы баз данных, такие как Microsoft SQL Server, Oracle и IBM DB2 с вашими корпоративными приложениями .NET.
EntityFramework 5.0 просто скалывает, хотя ему не хватает некоторых функций в comaprison с nhibernate, но в отношении поддержки LINQ это очень много гораздо лучше, чем nhibernate. Nhibernate имеет концепцию SessionFactory и Session, тогда как entityframework имеет концепцию DbContext, похожую на сеанс nhibernate, но гораздо проще в настройке и управлении, вы можете подключаться ко многим базам данных, все, что вам нужно, это для каждой базы данных определять DbContext и создать экземпляр SpecificDbContext, чтобы начинать и записывать запросы LINQ в отношении конкретной базы данных.