NHibernate 3.1: MissingMethodException при вызове LambdaExtensions - PullRequest
0 голосов
/ 31 марта 2011

После обновления с NH 3.0 до 3.1 у меня возникли некоторые проблемы с использованием следующего кода:

 criteria = session.CreateCriteria<User>()
    .Add(SqlExpression.InG<User, int>(user => user.ID, toBeFechted)); // toBefetched is an IList<int>

Это скомпилируется нормально, но при запуске я получаю исключение, как только я добавляю Inусловие к критериям.

System.MissingMethodException: Метод не найден: NHibernate.Criterion.AbstractCriterion NHibernate.Criterion.Restrictions.InG (System.String, System.Collections.Generic.ICollection 1<**UNKNOWN TYPE**>). at NHibernate.LambdaExtensions.SqlExpression.InG(Expression 1 выражение, ICollection`1 values)

Я могу перестроить запрос, используя QueryOver вместо Criteria, и он будет работать, но для этого нужно выкопать много кода, на который у меня нет времени.При использовании NH 3.0 у меня не было проблемы.

Что-то изменилось в NH 3.1 или у меня какая-то странная проблема с dll?

1 Ответ

1 голос
/ 09 июня 2011

Если вы используете Google Lambda Extensions старого стиля Googlecode, которые были построены на сборках NH 2.1, у вас есть 2 варианта; - вы можете понизить версию до 3.0 или загрузить исходный код и скомпилировать его для более поздних двоичных файлов.

Если вы не хотите этого делать, у меня есть копия NHlambdaextensions, созданная для NH3.1, которая включает в себя все оригинальные тесты, проходящие, чтобы дать вам некоторое покрытие

...