我需要一些帮助,因为无法解释这一点。我们有一个半复杂的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中编译代码时,我们的网站会中断...
答案 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一起使用。