时,由于升级从NH 3.0到3.1我一直在使用下面的代码有一些麻烦:NHibernate的3.1:MissingMethodException调用LambdaExtensions
criteria = session.CreateCriteria<User>()
.Add(SqlExpression.InG<User, int>(user => user.ID, toBeFechted)); // toBefetched is an IList<int>
这将编译正常,但当运行它我尽快得到一个异常因为我将条件添加到条件。未找到方法::
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值)
我可以使用QueryOver重建查询而不是Criteria,它可以工作,但这样做需要挖掘大量我没有时间去做的代码。使用NH 3.0我没有问题。
在NH 3.1中有一些变化,或者我有一些奇怪的DLL问题?
我已经看到了这个例外部署一些组件当原始测试在GAC中。我不增加任何更改的版本,你会得到一个MissingMethod异常。不知道在使用nhibernate时会发生这种情况,但无论如何你都应该检查。此外,你应该检查是否使用流利/旧LINQ /旧缓存prividrs,他们都与NH 3.1 – 2011-03-31 13:09:59
编译我不知道如何检查。就我所知,我没有对GAC做过任何事情。我也设法使用.Add(SqlExpression.IsNotNull(x => x.ID)); SqlExpression是LambdaExtensions的一部分,我怀疑这个引用有什么问题,但是看起来没有。 –
ds99jove
2011-03-31 14:45:48
我倒退到NH 3.0,一切都开始工作了。 – ds99jove 2011-04-01 06:08:16