我正在尝试使用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_放在子查询中... 任何的想法 ?我做错了吗?
提前致谢!
答案 0 :(得分:0)
所有没有前缀的列都被视为拥有实体的列。简单的解决方案:
condition="Abbreviation in (SELECT ad.AllowedAbbreviation from dbo.AllowedDistricts ad)"