Расширяемость Linq для NHibernate для пользовательских операций запроса строки? - PullRequest
4 голосов
/ 26 ноября 2010

Я хотел бы иметь возможность использовать пользовательские запросы строк в моих выражениях NHibernate Linq. Допустим, к примеру (и это всего лишь пример) я хотел бы иметь возможность выбирать сущности, содержащие свойство, которое является анаграммой определенной строки:

var myEntities = EntityRepository.AllEntities.Where(x => x.Description.IsAnagramOf('hits');

Я предполагаю, что шаги, вовлеченные в этот процесс, будут:

  1. Определите UDF SQL Server для определения являются ли две строки анаграммами.

  2. Определить метод расширения под названием IsAnagramOf () для строки класс.

  3. (И это хитрый). изменять Линк в NHibernate's компонент для разбора выражения деревья, так что он преобразует звонки в метод расширения в соответствующий SQL-вызов UDF.

Мой вопрос такой. Есть ли в Linq to NHibernate какая-то модель расширяемости, позволяющая мне «вставлять» свои собственные пользовательские строковые операции, или мне буквально придется изменить существующий исходный код, чтобы добавить его в шизнит к компоненту синтаксического анализа дерева выражений?

1 Ответ

4 голосов
/ 26 ноября 2010

Расширяемость встроена в NH 3.0 (окончательный выпуск в следующем месяце).

Вы можете увидеть полный рабочий пример на http://fabiomaulo.blogspot.com/2010/07/nhibernate-linq-provider-extension.html

...