Наиболее полная ORM с поддержкой LINQ? - PullRequest
13 голосов
/ 02 марта 2009

Я ищу ORM, который предлагает полную или почти полную поддержку LINQ.

LINQ to SQL
- Поддерживает все внутри LINQ (.Contains, Math.Log и т. Д.)
- Невозможно загрузить свойства отношений загрузки, не создав новый текстовый текст

ADO.NET Entity Framework
- Ужасная поддержка LINQ (множество отсутствующих функций).
- Отличная картография - Может загружать по требованию с помощью методов .Include для ObjectQuery <>

LightSpeed ​​
- Отличная поддержка LINQ, пропускающая некоторые функции (. Содержит внутри Where)
- Часть сгенерированного SQL очень неэффективна.

Кажется, ни один из них не подходит просто идеально, я искренне желаю, чтобы я мог взять кусочки от каждого. Лично мне очень нравится ADO.NET EF, за исключением тех возможностей, которые отсутствуют, поэтому его просто разочаровывает.

Я знаю, что некоторые люди хвалят NHibernate все выше и ниже, и я не сбиваю его с толку, но я потратил сегодня на его тестирование, и это нормально, но поддержка LINQ не так уж велика.

Ответы [ 10 ]

5 голосов
/ 31 июля 2009

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

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

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

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

Llblgen, похоже, имеет довольно хорошую поддержку linq. У Франса есть целая серия постов в блогах о его разработке http://weblogs.asp.net/fbouma/archive/2007/09/11/developing-linq-to-llblgen-pro-day-0.aspx

3 голосов
/ 02 марта 2009
2 голосов
/ 31 июля 2009

Новейшая версия 3.0 SubSonic была полностью переписана с использованием Linq - http://subsonicproject.com/docs/3.0_Summary

2 голосов
/ 08 июля 2009

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

0 голосов
/ 10 октября 2013

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

0 голосов
/ 03 апреля 2009

Геном .

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

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

NHibernate с Linq для NHibernate

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

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

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

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

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

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

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

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