Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Recomende o uso de tabela temporária ou variável de tabela no Entity Framework 4. Atualizar a estrutura de entidade de desempenho


Para volumes de dados como 300 mil linhas, eu esqueceria o EF. Eu faria isso tendo uma tabela como:
BatchId  RowId

Onde RowId é o PK da linha que queremos atualizar e BatchId apenas se refere a essa "execução" de 300k linhas (para permitir várias de uma só vez etc).

Eu geraria um novo BatchId (isso poderia ser qualquer coisa única -Guid vem à mente) e usaria SqlBulkCopy para inserir os registros nesta tabela, ou seja,
100034   17
100034   22
...
100034   134556

Eu usaria então um sproc simples para fazer a junção e atualização (e excluir o lote da tabela).

SqlBulkCopy é a maneira mais rápida de obter esse volume de dados para o servidor; você não vai se afogar em viagens de ida e volta. EF é orientado a objetos:bom para muitos cenários - mas não este.