未找到方法:'System.Linq.IQueryable`1<!!0> NHibernate.Linq.LinqExtensionMethods.Query(NHibernate.IStatelessSession)'

Method not found: 'System.Linq.IQueryable`1<!!0> NHibernate.Linq.LinqExtensionMethods.Query(NHibernate.IStatelessSession)'

我在将 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();

这是详细消息异常:

Method not found: 'System.Linq.IQueryable`1 NHibernate.Linq.LinqExtensionMethods.Query(NHibernate.IStatelessSession)'.

我注意到当我调用service.Query时,系统会抛出异常:

'service.Query' threw an exception of type 'System.MissingMethodException'

我错过了什么?

您的应用仍在尝试调用在 NHibernate 5 中删除的旧扩展 Query 方法。Query 自 NHibernate 5 以来是 IStatelessSession/ISession 接口方法。

您看到的异常表示您的应用程序未使用新的 NHibernate dll 正确地重新编译。确保您所有的项目都引用了新的 dll(或 nuget 包)并且您没有编译错误(可能的情况 - 您 运行 在升级之前最后一次成功构建但使用了更新的 dll)。