エンティティGameSystemDAOと、多対1のタイプのGameSystemDAOであるプロパティGameSystemを持つエンティティContestPlanningGSItemDAOがあります。次のSQLに対応するQueryOver式とは何ですか?
select *
from gamesystemdao g
where not exists (
select *
from contestplanninggsitemdao cpgsi
where cpgsi.gamesystem = g.id)
私は以下(および他の多くのバリエーション)を試しました:
GameSystemDAO gameSystemAlias = null;
ContestPlanningGSItemDAO contestPlanningGSItemAlias = null;
List<GameSystemDAO> newGameSystems = session.QueryOver<GameSystemDAO>(() => gameSystemAlias)
.WithSubquery
.WhereNotExists(
QueryOver.Of<ContestPlanningGSItemDAO>(() => contestPlanningGSItemAlias)
.Where(() => contestPlanningGSItemAlias.GameSystem.Id == gameSystemAlias.Id)
.Select(c => c.GameSystem))
.List();
ただし、常にKeyNotFoundExceptionが発生します。指定されたキーが辞書に存在しませんでした。NHibernateがContestPlanningGSItemDAOインスタンスでgameSystemAliasという名前のプロパティを探しているようです。
私は何が間違っているのですか?