Sobes.tech
Middle

Ar Include yra skubus, tingus ar aiškus įkėlimas?

sobes.tech AI

Atsakymas iš AI

Entity Framework'e Include yra mechanizmas Pirmojo įkėlimo (Eager Loading).

Pirmojo įkėlimo reiškia, kad susijusios entitės yra įkeliamos iš duomenų bazės kartu su užklausta entitė viena ar keliais užklausomis pirmą kartą prieigos prie duomenų metu.

Jo naudojimas užkerta kelią "N+1 užklausų" problemai, kuri gali atsirasti naudojant tingų įkėlimą, kai kiekvienai susijusiai entitei pasiekti atliekama atskira užklausa į duomenų bazę.

Sintaksė:

// Greitas įkėlimas su užsakymais kartu su klientais
var customersWithOrders = context.Customers.Include(c => c.Orders).ToList();

Palyginimas su kitais įkėlimo tipais:

Tipas Aprašymas Kada naudoti
Greitas (Include) Susijusių duomenų įkėlimas kartu su pagrindiniais duomenimis vienu ar keliais užklausomis. Kai susiję duomenys beveik visada yra reikalingi.
Tingus (Lazy) Susijusių duomenų įkėlimas tik pirmojo prisilietimo metu. Kai susiję duomenys ne visada yra reikalingi.
Aiškus (Explicit) Rankinis susijusių duomenų įkėlimas po pagrindinės entitės gavimo. Kai susiję duomenys yra reikalingi tam tikru momentu po pagrindinės entitės įkėlimo.