这是我简单的С#代码:
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;
}
}
在foreach
周期中,NHibernate将SQL查询发送到我的数据库。为什么?内部联接在第一次查询中已经请求GameCharacterEquipment
的信息。
我有流利的地图。
答案 0 :(得分:0)
尝试添加
.SetFetchMode("GameCharacterEquipments", FetchMode.Join)
或
.SetFetchMode("GameCharacterEquipments", FetchMode.Eager)
各种电话之间(CreateAlias
之后)
您可能在GameCharacterEquipments
上定义了懒惰关系。