Middle
Como ocorre o carregamento de entidades relacionadas em C#?
sobes.tech IA
Resposta da IA
O carregamento de entidades relacionadas em C# é frequentemente realizado usando bibliotecas ORM, como o Entity Framework Core. As abordagens principais:
- Carregamento ansioso (Eager): Os dados relacionados são carregados juntamente com a entidade principal numa única consulta à base de dados.
// Uso do método Include para carregamento ansioso var postsWithComments = context.Posts .Include(p => p.Comments) .ToList(); - Carregamento explícito (Explicit): Os dados relacionados são carregados explicitamente após obter a entidade principal.
Para propriedades de navegação singulares, usa-se// Obtenção da entidade principal var post = context.Posts.Find(1); // Carregamento explícito dos comentários relacionados context.Entry(post) .Collection(p => p.Comments) .Load();.Reference()em vez de.Collection().// Carregamento explícito do autor relacionado context.Entry(post) .Reference(p => p.Author) .Load(); - Carregamento preguiçoso (Lazy): Os dados relacionados são carregados automaticamente na primeira vez que são acessados. Requer configuração de proxies ou injeção de dependências e é o comportamento padrão em alguns ORM.
No Entity Framework Core, é necessário instalar o pacote// Com carregamento preguiçoso ativado var post = context.Posts.Find(1); // Acesso a Comments dispara o carregamento int commentCount = post.Comments.Count;Microsoft.EntityFrameworkCore.Proxiese chamar.UseLazyLoadingProxies()na configuração doDbContext. As propriedades de navegação devem ser declaradas comovirtual.
A escolha do método depende do cenário de uso e do compromisso entre desempenho (número de consultas) e volume de dados carregados.