Получите отличное IQueryable с NHibernate - PullRequest
2 голосов
/ 06 октября 2011

У меня есть таблица в дБ с полями: Id, Key, Value. У меня есть несколько идентичных ключей
Я хочу получить коллекцию таблиц IQuerable через NHibernate 3.2.0.4 с помощью Key.
Я пытался сделать это так:
1. var items = dr.Localization.GetQuery().Distinct(new MyComparer());
и получил:
Не удалось разобрать выражение 'value (NHibernate.Linq.NhQueryable`1 [AbstractDataRepository.Domain.ILocalization]). Distinct (value (LEditorExtension.Presentation.Controllers.MyComparer))': это перегрузка метода 'System.Linq.Queryable. Distinct 'в настоящее время не поддерживается.
2. var items = dr.Localization.GetQuery().GroupBy(x => x.Key).Select(g => g.First());
получил значение null в 'items' dr.Localization.GetQuery (). GroupBy (x => x.Key): выражение не может содержать лямбда-выражения
Есть ли способ решить эту проблему? Спасибо!

1 Ответ

2 голосов
/ 06 октября 2011

Проблема здесь в том, что ваш запрос выполняется по БД, где ваш пользовательский компаратор недопустим, так как он не может быть переведен в действительный sql.Таким образом, если вы думаете, что можете сделать отличительные в sql, то вы можете попытаться, указав, какое свойство (свойства) вы хотите, чтобы оно было различимым.

Если вы все еще хотите использовать свой собственный компаратор, сначала выполните List () итогда сделай отличное от него.

dr.Localization.GetQuery().List().Distinct(new MyComparer());
...