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

时间:2015-10-16 00:47:48

标签: c# visual-studio visual-studio-2012 nhibernate visual-studio-2015

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

var query = _tyreRepository.Session.QueryOver<Tyre>(() => tyreAlias)
     .JoinQueryOver<Pattern>(() => tyreAlias.Pattern,  () => patternAlias)
       .JoinQueryOver<Brand>(() => patternAlias.Brand, () => brandAlias)
     .JoinQueryOver<RimSize>(() => 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中编译代码时,我们的网站会中断...

1 个答案:

答案 0 :(得分:4)

好的我确实找到了解决方案。由于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一起使用。