现在我正在使用 Criteria API 并喜欢它,但如果我可以切换到 QueryOver API 会更好。但是,我的设置有点奇怪。为了将数据分区到表中,我有一个基本抽象类:
Listing
以及从中继承的许多类:
Listing_UK
Listing_US
etc.
使用标准 API,我可以执行以下操作:
Type t = typeof(Listing_UK);
if (condition) t = typeof(Listing_US);
DbSession.CreateCriteria(t)
.Add(Restriction.Eq("field",value)
.List<Listing>());
基本上,对不同的类使用相同的查询。似乎 QueryOver 的强类型特性阻止了我这样做 - 基本问题是:
DBSession.QueryOver<Listing_UK>()
不投射到
DBSession.QueryOver<Listing>
虽然我理解为什么,但我想知道是否有人可以使用任何技巧来创建仍将针对正确表的通用 QueryOver?