2011-08-05 57 views
0

忽略了我使用NHibernate的3.2.0,我不能让LINQ提供程序生成此说法正确的SQL查询:LINQ NHibernate的“按组”条款

var result = (from translation in session.Query<TmTranslation>() 
       where translation.Id > 0 
       group translation by translation.Language into grp 
       select new { Lang = grp.Key.Code }).ToList(); 

生成的SQL是

select tmtranslat0_.id      as id32_, 
     tmtranslat0_.status     as status32_, 
     tmtranslat0_.text      as text32_, 
     tmtranslat0_.last_revision    as last4_32_, 
     tmtranslat0_.fk_id_translation_unit as fk5_32_, 
     tmtranslat0_.fk_id_translator   as fk6_32_, 
     tmtranslat0_.fk_id_last_modifier  as fk7_32_, 
     tmtranslat0_.fk_id_last_match_category as fk8_32_, 
     tmtranslat0_.fk_id_language   as fk9_32_ 
from "TRANSLATION" tmtranslat0_ 
where tmtranslat0_.id > 0 

这当然,导致从数据库中加载所有实体和分组结果在内存中集(结果本身是正确的)。

,我想这样的事情,而是生成

select tmtranslat0_.fk_id_language 
from "TRANSLATION" tmtranslat0_ 
where tmtranslat0_.id > 0 
group by tmtranslat0_.fk_id_language 

我错过了什么吗?

非常感谢。

回答