nhibernate无法使用LeftOuterJoin解析属性(仅在Visual Studio 2015中)

我需要一些帮助,因为无法解释这一点。 我们有一个半复杂的nhibernate查询:

var query = _tyreRepository.Session.QueryOver(() => tyreAlias) .JoinQueryOver(() => tyreAlias.Pattern, () => patternAlias) .JoinQueryOver(() => patternAlias.Brand, () => brandAlias) .JoinQueryOver(() => tyreAlias.RimSize, () => rimSizeAlias) .JoinQueryOver(() => tyreAlias.SpeedIndex, () => speedIndexAlias, JoinType.LeftOuterJoin); 

哪个在Visual Studio 2012中工作正常,我们最近升级到Visual 2015,现在这个查询不起作用; 当你在速度指数上使用where时:

 query.Where(() => speedIndexAlias.SpeedKm >= speedKms); 

否则查询工作正常。

花了很长时间调试回滚代码没什么用。 然后我们得到了相同的项目,在visual studio 2012中正常工作。 我们无法弄清楚为什么当我们在visual studio 2015中编译项目时,这个查询不再有效(对查询没有任何改变)。

我非常喜欢2015年的所有新语言变化,但是当我们在Visual Studio 2015中编译代码时,我们的网站中断…

好的,我确实找到了解决方案。 由于Visual Studio 2015中的C#Roslyn编译器存在问题,您需要将nhibernate升级到最新版本。不幸的是,看起来旧版本的nhibernate根本没有解决这个问题。

https://nhibernate.jira.com/browse/NH-3795

因此,如果你想使用visual studio 2015并使用nhibernate,你必须升级nhibernate。 必须建立4.04.4000,我可以确认它与流畅的2.0.3一起工作。