0

自从从 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(Expression1 表达式,ICollection`1 值)

我可以使用 QueryOver 而不是 Criteria 来重建查询,它会起作用,但是这样做需要挖掘很多我没有时间去做的代码。使用 NH 3.0 我没有问题。

NH 3.1 有什么变化还是我有一些奇怪的 dll 问题?

4

1 回答 1

1

如果您使用的是基于 NH 2.1 程序集构建的 Googlecode 旧式 NH Lambda 扩展,您有 2 个选项;- 您可以降级到 3.0,或者您可以下载源代码并针对以后的二进制文件进行编译。

如果您不想这样做,我有一份针对 NH3.1 构建的 NHlambdaextensions 副本,其中包括所有通过的原始测试,以便为您提供一些覆盖

于 2011-06-09T09:21:07.620 回答