1

这是我的简单С#代码:

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内部连接在第一个查询中已请求的信息。我有流利的地图。

4

1 回答 1

0

尝试添加

.SetFetchMode("GameCharacterEquipments", FetchMode.Join)

或者

.SetFetchMode("GameCharacterEquipments", FetchMode.Eager)

在各种调用之间(在 之后CreateAlias

您可能在GameCharacterEquipments.

于 2013-09-13T12:16:22.173 回答