[英]NHibernate C# inner join n+1
Here is my simple С# code: 这是我简单的С#代码:
var chests = _session.CreateCriteria<GameCharacterChest>()
.CreateAlias("GameCharacterEquipments", "equip", JoinType.InnerJoin)
.Add(Restrictions.Eq("GameCharacterId", characterId))
.List<GameCharacterChest>();
foreach (var chest in chests)
{
var equip = chest.GameCharacterEquipments.FirstOrNull();
if (equip != null)
{
var slot = (equip as GameCharacterEquipment).GameCharacterSlotTypeId;
}
}
In foreach
cycle NHibernate sends SQL query to my DB. 在foreach
周期中,NHibernate将SQL查询发送到我的数据库。 Why? 为什么? information about GameCharacterEquipment
already requested in first query by inner join. 内部GameCharacterEquipment
在第一次查询中已经请求的有关GameCharacterEquipment
信息。 I have fluent map. 我的地图很流利。
Try adding 尝试添加
.SetFetchMode("GameCharacterEquipments", FetchMode.Join)
or 要么
.SetFetchMode("GameCharacterEquipments", FetchMode.Eager)
between the various calls (after the CreateAlias
) 在各个调用之间(在CreateAlias
)
You probably have a lazy relationship defined on the GameCharacterEquipments
. 您可能在GameCharacterEquipments
上定义了惰性关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.