Middle
C#те байланыштуу объекттерди жүктөө кандай болот?
sobes.tech AI
AIден жооп
C# тилинде байланышкан объекттерди жүктөө көбүнчө ORM китепканалары, мисалы, Entity Framework Core аркылуу жүргүзүлөт. Негизги жактар:
- Eager (кечиктирилген) жүктөө: Байланышкан маалыматтар негизги объект менен бирге бир суроо аркылуу жүктөлөт.
// Include методу аркылуу eager жүктөө var postsWithComments = context.Posts .Include(p => p.Comments) .ToList(); - Explicit (ачык) жүктөө: Байланышкан маалыматтар негизги объект алгандан кийин ачык түрдө жүктөлөт.
Жалгыз навигациялык мүнөздөмөлөр үчүн// Негизги объектти алуу var post = context.Posts.Find(1); // Байланышкан комментарийлерди ачык жүктөө context.Entry(post) .Collection(p => p.Comments) .Load();.Reference()колдонулат,.Collection()ордуна.// Байланышкан авторду ачык жүктөө context.Entry(post) .Reference(p => p.Author) .Load(); - Lazy (кечиктирилген) жүктөө: Байланышкан маалыматтар автоматтык түрдө биринчи кайрылууда жүктөлөт. Proxy конфигурациясын жана көзкарандылык инъекциясын талап кылат жана кээ бир ORM'дерде негизги жүрүм-турум.
Entity Framework Core'до// Lazy жүктөө иштетилгенде var post = context.Posts.Find(1); // Commentsке кайрылуу жүктөөнү иштетет int commentCount = post.Comments.Count;Microsoft.EntityFrameworkCore.Proxiesпакети орнотулушу жана.UseLazyLoadingProxies()чакырылышы керек. Навигациялык мүнөздөмөлөрvirtualдеп жарыялануусу керек.
Кайсы ыкманы тандоо колдонуу сценарийине жана иштөө (суроолор саны) менен жүктөлгөн маалымат көлөмүнүн ортосундагы компромисске көз каранды.