Linq to Nibernate дизайн - PullRequest
       13

Linq to Nibernate дизайн

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

Я думал, что целью использования Linq2Nibernate было вернуть IQueryable и построить дерево выражений. Я не уверен, правильно это или нет.

Зачем кому-то использовать Linq2Nibernate, если он не собирается возвращать IQueryable?

Для чего еще это будет использоваться?

Я хотел бы получить дополнительную информацию по этой теме

Linq для Nhibernate

Ответы [ 4 ]

3 голосов
/ 17 марта 2009

Я планирую использовать NHibernate.Linq, чтобы заменить мои запросы HQL и критериев API выражениями LINQ. Другими словами, я сгенерирую запрос в коде (как выражение LINQ), а затем передам его NHibernate.Linq и NHib, чтобы преобразовать его в запрос к базе данных.

К вашему сведению, доступна альфа-версия .

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

Я использую Linq2Nhibernate с моим шаблоном репозитория, который возвращает объекты IQueryable. Как вы знаете, IQueryable - это только определение запроса - пока не касается базы данных.

Затем к запросу добавляются локальные требования и, наконец, материализуется объект или список.

Кажется, работает отлично и предотвращает ненужные запросы БД для частичных данных на более высоких абстрактных уровнях.

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

Я планировал начать использовать Linq2Nibernate, но пока не дошел до меня.

Причиной желания пользователя Linq2Nibernate является приятный синтаксис при построении критериев и последующем их запросе.

Вот хороший простой пример. http://ayende.com/Blog/archive/2007/03/16/Linq-for-NHibernate.aspx

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

Что такое Linq2NHibernate? Так как есть несколько проектов, которые пытались реализовать linq-провайдера для nhibernate, но все были остановлены до завершения.

Любой поставщик linq должен возвращать IQueryable или, что лучше, IEnumerable, поскольку именно так работает linq. Удобно возвращать IQueryable, поскольку затем вы можете повторно использовать существующий код для добавления дополнительных операторов к уже созданному запросу (так как ctx.Employee, который может вернуть IQueryable, уже является запросом)

...