QUE ESTRATÉGIA ABORDAR EM MUITOS DADOS
Citação::
NOWLIGHTS
Minha aplicação é em Blazor webassembly utilizo C# e html puro para fazer isso.
Basicamente faço da seguinte forma, quando faço a primeira requisição o retorno de uma classe que contem uma propriedade que me informa a quantidade de registro com critério da consulta e outra propriedade com a lista de registros (200 registros ou menos se quiser) depois vou fazendo a busca dos registros até trazer todos os registros, tenho uma classe que controla tudo isso para mim é possÃÂvel cancelar a busca de registro....
Basicamente, um lazy loading feito àmão
Vou relatar o que acho e o que aconteceu comigo: Em uma aplicação, usando a abordagem code first, por exemplo: Tabela Empresa, que se relaciona com Produtos, Pessoas, Grupos, e por ai vai... Quando se faz uma consulta por exemplo de empresas no net core, e usando o include (pelo menos aconteceu comigo, e me corrijam se estiver errado), o EF traz as Empresas com todos os relacionamentos, que se auto relacionam com eles mesmos (propriedades de navegação) isso gerava pra mim um json de mais ou menos 500mb, levava 20 minutos para baixá-lo e deserializá-lo.
Quando percebi e entendi que o problema não era o EF nem banco, e muito menos o servidor, eu resolvi criar uma view model, onde esta retorna pra mim apenas as propriedades que eram necessárias.
Para fazer o match entre a view model e o domínio consultado, eu usei o automapper, e passou de 20 minutos para 5 segundos.
Então... Veja se voce não esta retornando o domínio (a entidade pura para o front), se for isso, crie uma view model e retorne apenas os campos necessários.
Espero ter ajudado, e boa sorte
Citação:EF traz as Empresas com todos os relacionamentos, que se auto relacionam com eles mesmos (propriedades de navegação) isso gerava pra mim um json de mais ou menos 500mb, levava 20 minutos para baixá-lo e deserializá-lo.
MARCELOKROL
Mas esse problema é fácil de resolver é só desabilitar o Lazy Loading no Entity Framework, dessa forma só retorna o que voce quer, ou seja, para trazer as propriedades de navegação ou qualquer outra propriedade relacionada tem que ser usado o Include ou ThenInclude, se não usar essas propriedades ficam fazias, dessa forma da para controlar somente o que realmente precisa no momento.
Citação::
EF traz as Empresas com todos os relacionamentos, que se auto relacionam com eles mesmos (propriedades de navegação) isso gerava pra mim um json de mais ou menos 500mb, levava 20 minutos para baixá-lo e deserializá-lo.
MARCELOKROL
Mas esse problema é fácil de resolver é só desabilitar o Lazy Loading no Entity Framework, dessa forma só retorna o que voce quer, ou seja, para trazer as propriedades de navegação ou qualquer outra propriedade relacionada tem que ser usado o Include ou ThenInclude, se não usar essas propriedades ficam fazias, dessa forma da para controlar somente o que realmente precisa no momento.
O meu problema foi saneado. Eu explanei tudo isso, para exemplificar que aconteceu comigo, e também como fiz para resolve-lo, para que o colega verifique se não é isso o que acontece com ele. Estou engatinhando no EF core, já aprendi muita coisa, e sei que tenho ainda muito o que aprender.
Estou desenvolvendo agora um projeto grande, onde receberá vários dados de várias empresas, e sei que vou precisar de ajuda, e sempre tentarei contribuir com o meu pouco conhecido para essa comunidade.
Abraço e bom dia a todos
e sempre ter os índices necessários
NOWLIGHTS Além do AsNoTrackingWithIdentResolution ( se não precisar editar nada dos registros ), sempre aconselho Paginação. Dúvido que alguém precise de 2.500 registros na tela de uma única vez.
Outra dica ( que acho que já comentaram ), retorne apenas os dados realmente necessários, usando o .Select() antes de efetivar a consulta ( .ToListAsync, FirstOrDefaultAsync ).
Verifique os ÃÂndices.
Em casos pontuais, pode até ser feito um sql do modo clássico, que voce tem o total controle da query e executar pelo EF.