我有一個實體GameSystemDAO和實體ContestPlanningGSItemDAO屬性GameSystem這是一個多對一的GameSystemDAO類型。什麼是QueryOver表達式,它對應於以下SQL?NHibernate不存在與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的屬性。
我在做什麼錯?
一個完整的stacktrace最經常幫助很多,所以plz總是從開始發佈 – Firo 2012-07-12 09:01:37
@Firo異常正在拋出NHibernate.Persister.Entity.AbstractPropertyMapping.ToType(字符串propertyName),第37行(使用NHibernate的3.2.0) – Marto 2012-07-12 10:24:38
感謝發佈,這讓我走了。 – JasonCoder 2013-07-02 22:17:32