Кто-нибудь получал "Unhandled Expression Type: 1004", используя Linq для NHibernate? - PullRequest
1 голос
/ 16 сентября 2009

У меня есть запрос linq, который передается в NHibernate, который Linq2NHibernate будет анализировать и возвращать заполненные сущности.

string firstName = "Ryan";
Store store = _repository.Query<Store>().Where(x => x.Employees.Select(y => y.FirstName).Contains(firstName)).FirstOrDefault();

Проблемная часть: x => x.Employees.Select (y => y.FirstName) .Contains (firstName)

Что нужно сделать, это выбрать магазины, в которых есть сотрудники с именем Ryan.

В строке выше появляется сообщение об ошибке " Необработанный тип выражения: 1004 "

Мне кажется, что это ограничение Linq2NHibernate и .Select().Contains() просто не может быть проанализирован.

Есть идеи? Кто-нибудь еще каждый получил эту ошибку? Что я могу сделать, чтобы это исправить или обойти это?

[РЕДАКТИРОВАТЬ]

Вот что я использовал вместо этого.

string firstName = "Ryan"
Store store = _repository.Query<Store>().Where(x => x.Employees.Any(y => y.FirstName == firstName)).FirstOrDefault();

Запрос Linq: x => x.Employees.Any(y => y.FirstName == firstName)

1 Ответ

3 голосов
/ 16 сентября 2009

Я не использую LINQ для NHibernate, но я бы не писал этот запрос где-либо еще. Попробуйте:

string firstName = "Ryan";
Store store = _repository.Query<Store>()
                         .Where(s => s.Employees.Any(
                                e => e.FirstName.Equals(
                                     firstName,  StringComparison.WhateverTypeYouNeed))
               ).FirstOrDefault();

Если L2NH не любит string.Equals (), попробуйте ==

...