NHibernate 3.1 Query равно - PullRequest
       2

NHibernate 3.1 Query равно

5 голосов
/ 18 марта 2011

Я только что обновился с NHibernate 2.1 до NHibernate 3.1.Я обнаружил, что оператор равенства для использования Linq не был реализован для других типов, кроме string.
Я нашел в Интернете статью , чтобы решить эту проблему.Это хорошо работает для основных типов, но теперь я хочу сравнить пользовательские объекты и не могу заставить его работать.

Я пробовал некоторые реализации, но ни одна из них не работает:

ReflectionHelper.GetMethodDefinition<CustomEntity>(x => x.Equals(<CustomEntity>(0)))  
ReflectionHelper.GetMethodDefinition<CustomEntity>(x => x.Equals(typeof(CustomEntity))

запрос, который я хочу выполнить, выглядит следующим образом:

Session.Query<SomeEntity>().Where(x => x.CustomEntity.Equals(CustomEntity);

Как я могу расширить равные, чтобы разрешить это, и не получить исключение NotSupportedException?

1 Ответ

3 голосов
/ 27 апреля 2011

.Equals метод не может быть переведен в SQL, который выполняется системой при выполнении метода Query <> ().Попробуйте использовать уравнение, как это:

Session.Query<SomeEntity>().Where(x => x.CustomEntity.Id == CustomEntity.Id);
...