Middle
Kako se vrši učitavanje povezanih entiteta u C#?
sobes.tech АИ
Одговор од АИ
Učitavanje povezanih entiteta u C#-u često se vrši pomoću ORM biblioteka, kao što je Entity Framework Core. Glavni pristupi:
- Eager (nestrpljivo) učitavanje: Povezani podaci se učitavaju zajedno sa glavnom entitetom u jednom upitu ka bazi podataka.
// Korišćenje metode Include za eager učitavanje var postsWithComments = context.Posts .Include(p => p.Comments) .ToList(); - Explicit (izričito) učitavanje: Povezani podaci se izričito učitavaju nakon dobijanja glavnog entiteta.
Za pojedinačne navigacione osobine koristi se// Dobijanje glavnog entiteta var post = context.Posts.Find(1); // Izričito učitavanje povezanih komentara context.Entry(post) .Collection(p => p.Comments) .Load();.Reference()umesto.Collection().// Izričito učitavanje povezanog autora context.Entry(post) .Reference(p => p.Author) .Load(); - Lazy (lenjivo) učitavanje: Povezani podaci se automatski učitavaju pri prvom pristupu. Zahteva konfiguraciju proxy-ja ili injekciju zavisnosti i podrazumevano je ponašanje u nekim ORM-ovima.
U Entity Framework Core, potrebno je instalirati paket// Sa omogućenom lazy loading-om var post = context.Posts.Find(1); // Pristup Comments pokreće učitavanje int commentCount = post.Comments.Count;Microsoft.EntityFrameworkCore.Proxiesi pozvati.UseLazyLoadingProxies()u konfiguracijiDbContext. Navigacione osobine treba deklarisati kaovirtual.
Izbor metode zavisi od scenarija korišćenja i kompromisa između performansi (broj upita) i volumena učitanih podataka.