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;
    } 
}

サイクルでNHibernateはforeachSQLクエリをDBに送信します。なんで?GameCharacterEquipment内部結合による最初のクエリで既に要求されている情報。私は流暢な地図を持っています。

4

1 に答える 1

0

追加してみる

.SetFetchMode("GameCharacterEquipments", FetchMode.Join)

また

.SetFetchMode("GameCharacterEquipments", FetchMode.Eager)

さまざまな呼び出しの間 ( の後CreateAlias)

で遅延関係が定義されている可能性がありGameCharacterEquipmentsます。

于 2013-09-13T12:16:22.173 に答える