请参阅以下示例,这是我的代码的一个非常简化的版本:
Dim Criteria = Session.CreateCriteria(Of Person)()
Criteria.SetProjection(Projections.Property("Car"))
return Criteria.List(Of Car)()
这非常有效,但是 NHibernate 3.1 创建了两个查询来获取结果。就像是:
SELECT CarId FROM Person WHERE blababla
然后对于每一行:
SELECT color, brand, wheels FROM Car WHERE CarId = ?
这不是很有效,所以我尝试了:
Criteria.CreateAlias("Car", "Car")
Criteria.SetFetchMode("Car", NHibernate.FetchMode.Join)
什么都不做。如何强制 NHibernate 在第一个查询上进行连接,所以我最终会往返于 MySql 服务器?