Самая полная ORM с поддержкой LINQ?

Я ищу 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 не так уж хороша.

Ответы

Ответ 1

NHibernate с Linq to NHibernate

Ответ 2

Попробуйте DataObjects.NET. Я один из разработчиков DO. И моя последняя работа в этом проекте - реализовать LINQ для DataObjects. Поэтому я мог бы кратко описать это:

  • Поддерживает почти все методы LINQ, за исключением Last/LastOrDefault/Aggregate/Reverse/TakeWhile/SkipWhile и т.д. и методы, которые имеют специфичные для .NET аргументы - например, IComparer (никто их не поддерживает).
  • Поддерживаются практически все поддерживаемые методы string и Math (и у вас есть возможность писать собственные сопоставления функций!).
  • Сложные сценарии с GroupBy\SelectMany\Contains\Single\и т.д. в подзапросах и коррелированных подзапросах.

У нас около 1000 тестов реализации LINQ, и 99% из них переданы. Поэтому могу сказать, что текущая реализация близка к EF. Некоторые методы не работают с EF, некоторые с нашей картой. Проверьте это краткое описание http://www.x-tensive.com/Products/DO/.

Ответ 5

DataObjects.Net имеет почти полную поддержку LINQ.

Ответ 7

У меня были те же проблемы с EF. Я хотел использовать его для его отображения, но отказался от него из-за отсутствия хорошей поддержки linq.

Я не уверен, что вы подразумеваете под активными свойствами отношения нагрузки, но вы можете с нетерпением загружать простой linq-2-sql.

Вы используете LoadOptions.LoadWith<T>(expression).

Ответ 8

Signum Framework имеет провайдера linq, http://www.signumframework.com/DatabaseQuery.ashx и имеет совершенно другой способ загрузки прав. Нет datacontext.

Он отлично работает с новыми приложениями.

Ответ 9

Геном.

Геном O/RM использует LINQ для создания слоев доступа к данным, соединяющих реляционные системы баз данных, такие как Microsoft SQL Server, Oracle и IBM DB2 с вашими корпоративными приложениями .NET.

Ответ 10

EntityFramework 5.0 просто скалывает, хотя ему не хватает некоторых функций в comaprison с nhibernate, но в отношении поддержки LINQ это очень много гораздо лучше, чем nhibernate. Nhibernate имеет концепцию SessionFactory и Session, тогда как entityframework имеет концепцию DbContext, похожую на сеанс nhibernate, но гораздо проще в настройке и управлении, вы можете подключаться ко многим базам данных, все, что вам нужно, это для каждой базы данных определять DbContext и создать экземпляр SpecificDbContext, чтобы начинать и записывать запросы LINQ в отношении конкретной базы данных.