将NHibernate从4.1.2升级到5.2.3并将Target Framework从4.5升级到4.6.2(与NH 5.x兼容)时遇到问题。当我使用LINQ执行查询时出现问题(之前它运行良好):
service.Query.Where(p => p.Approved).FirstOrDefault();
这是详细消息异常:
找不到方法:'System.Linq.IQueryable`1 NHibernate.Linq.LinqExtensionMethods.Query(NHibernate.IStatelessSession)'。
我注意到当我调用service.Query时,系统会抛出异常:
'service.Query'引发了'System.MissingMethodException'类型的异常
我错过了什么?
您的应用程序仍在尝试调用在NHibernate 5中删除的旧扩展Query
方法。自NHibernate 5以来,Query
是IStatelessSession/ISession
接口方法。
您看到的异常意味着您的应用程序未使用新的NHibernate dll正确地重新编译。确保所有项目都引用了新的dll(或nuget包),并且没有编译错误(可能的情况 - 在升级之前运行上一次成功的构建但是使用更新的dll)。