nhibernate 5之后的不同查询(使用oracle)

nhibernate 5之后的不同查询(使用oracle),nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,在从4.1升级到5.2之后,nhibernate正在创建一个稍微不同的查询,在不受欢迎的地方添加“OR” 4.1 有关映射的更多信息: c、 佩吉德:智力 b、 Id:int 使用NHibernate 5.2.6和Fluent 2.1.2 为什么版本5要转换为不同的SQL语句?这是5.x的一个已知问题。详细说明行为改变的时间和原因。 另外,LINQ没有解决方法,因此如果它对您来说是一个showstopper,那么您必须使用hql/QueryOver 但是有一个开放的pull请求应该可以修复这

在从4.1升级到5.2之后,nhibernate正在创建一个稍微不同的查询,在不受欢迎的地方添加“OR”

4.1 有关映射的更多信息:

  • c、 佩吉德:智力
  • b、 Id:int
使用NHibernate 5.2.6和Fluent 2.1.2

为什么版本5要转换为不同的SQL语句?

这是5.x的一个已知问题。详细说明行为改变的时间和原因。 另外,LINQ没有解决方法,因此如果它对您来说是一个showstopper,那么您必须使用hql/QueryOver

但是有一个开放的pull请求应该可以修复这种行为。因此,也许在5.3中它会被修复。

这是一个已知的5.x问题。详细说明行为改变的时间和原因。 另外,LINQ没有解决方法,因此如果它对您来说是一个showstopper,那么您必须使用hql/QueryOver


但是有一个开放的pull请求应该可以修复这种行为。因此,在5.3中,它可能是固定的。

如果将查询更改为
,其中c.PegId.Value==b.id
是否会将查询更改为不使用
?我这样问是因为当我在一个使用EF的项目中工作时,一些查询在LINQI中不使用
.Value
时会执行空检查,如果将查询更改为
,其中c.PegId.Value==b.id
,是否会将查询更改为不使用
?我这样问是因为当我在一个使用EF的项目中工作时,一些查询在Linq中不使用
.Value
时会执行空检查
...,
...,   
(select cast(count(guia5_.ID) as NUMBER(10, 0))
  from SAM_GUIA guia5_

 where guia5_.PEGID = peg1_.ID                        <<<<<<<<<<<<<<<

) as col_41_0_,
...,
...,   
(select cast(count(guia5_.ID) as NUMBER(10, 0))
   from SAM_GUIA guia5_

  where guia5_.PEGID = peg1_.ID                        <<<<<<<<<<<<<<<
     or (guia5_.PEGID is null)                         <<<<<<<<<<<<<<<
    and (peg1_.ID is null)                             <<<<<<<<<<<<<<<

) as col_41_0_,  
...,
...,
RecordCount = (from c in repositoryGuia.All()
           where c.PegId == b.Id
           select c.Id
           ).Count(),