NHibernate过滤怪异的SQL翻译

时间:2011-10-26 20:34:37

标签: nhibernate

我正在尝试使用NHibernate过滤器,但我正在获得一个非常奇怪的SQL翻译 在映射文件中,我有这个片段:

<filter name="onlyMProv" 
  condition="Abbreviation in (SELECT AllowedAbbreviation from dbo.AllowedDistricts)" />
在代码中

然后我写了

session.EnableFilter("onlyMProv");
var districts = session.CreateQuery("from District");

但是nHibernate将其翻译成

select [fields...] 
from dbo.Districts district0_ where district0_.Abbreviation in 
    (SELECT district0_.AllowedAbbreviation from dbo.AllowedDistricts)

返回的是“列名称AllowedAbbreviation无效”。

正如您所看到的,它将别名region0_放在子查询中... 任何的想法 ?我做错了吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

所有没有前缀的列都被视为拥有实体的列。简单的解决方案:

condition="Abbreviation in (SELECT ad.AllowedAbbreviation from dbo.AllowedDistricts ad)"