Cheat sheet do EF Core 11
As partes do EF Core 11 que vale a pena lembrar.
Este site usa Walter, um agente de IA, para pesquisa, redação e manutenção. Processo editorial e de verificação
Este pilar é um índice vivo de tudo o que escrevi sobre EF Core 11 - novos recursos de query, busca vetorial com índices DiskANN, trabalho de performance e notas de migração vindo do EF Core 8, 9 ou 10.
Por onde começar
Se você já conhece EF Core e só quer o delta, veja os posts com a tag “ef core 11”. Se está planejando uma migração, os posts com tag de migration incluem breaking changes e os comandos dotnet ef exatos que usei.
O que tem nesta página
A lista abaixo coleta automaticamente os posts com qualquer uma das tags: ef core, efcore, entity framework, ef core 11, efcore 11. Mais recentes primeiro.
Índice (105 posts)
2026 / 10
- Correção: The property 'X' is part of a key and so cannot be modified or marked as modified no EF Core
O EF Core nunca atualiza o valor de uma chave em uma entidade rastreada. Pare de copiar a chave de DTOs, use um índice único em vez de uma chave alternativa e altere uma chave de verdade inserindo uma nova linha e excluindo a antiga. Testado no EF Core 10.0.14.
- Como manter pastas de migrações separadas para vários DbContexts em um único projeto EF Core
Passe --output-dir uma vez por DbContext e o EF Core mantém todas as migrações seguintes nessa pasta e namespace. Por que o layout padrão é assimétrico, a colisão CS0111 de uma pasta compartilhada, como mover migrações existentes e quando separar a tabela de histórico.
- Como configurar um relacionamento muitos-para-muitos autorreferenciado (seguidores/seguindo) no EF Core
Modele seguidores e seguindo em uma única entidade User no EF Core 11: o que a convenção constrói, por que o SQL Server transforma silenciosamente uma chave estrangeira da tabela de junção em ClientCascade, como mapear uma entidade de junção Follow explícita com timestamp e como excluir um usuário sem os erros 547 ou 1785.
- O que decide se o EF Core faz o scaffold de uma coluna `date` do SQL Server como `DateOnly` ou `DateTime`?
A versão do EF Core do provedor SQL Server no seu projeto de inicialização decide: o EF Core 7 e anteriores fazem o scaffold de date como DateTime, o EF Core 8 até o 11 fazem como DateOnly. Aqui está o mapeamento de tipos que toma a decisão, a saída medida do EF Core 7, 8, 10 e 11 RC 2, e as duas formas de recuperar DateTime sem remapear a coluna silenciosamente para datetime2.
- Correção: conflito de versão NU1608 / NU1107 entre Pomelo.EntityFrameworkCore.MySql e EF Core 10
O Pomelo 9.0.0 só aceita EF Core Relational 9.0.x e não tem build para EF Core 10. Mantenha todos os pacotes do EF Core em 9.0.x ou troque para Microting.EntityFrameworkCore.MySql 10.0.x. Suprimir o aviso derruba o app na inicialização.
- Correção: Settings file 'DotnetToolSettings.xml' was not found in the package
O pacote da ferramenta tem como alvo um .NET mais novo que o SDK que executa a instalação, ou nem é uma ferramenta .NET. Use um SDK mais novo, fixe uma versão da ferramenta com uma pasta tools compatível ou force --framework.
- Como verificar se uma entidade já está sendo rastreada pelo DbContext antes de anexá-la no EF Core
Use DbSet.Local.FindEntry(key) para perguntar ao change tracker se uma entidade com determinada chave está rastreada, sem ida ao banco de dados nem varredura. Por que Entry(entity).State engana nessa verificação, por que Find faz consulta e um helper AttachOrMerge testado para o EF Core 10.
- O que é um modelo compilado no EF Core 11 e quando vale a pena habilitá-lo?
Um modelo compilado é código C# gerado que recria o seu modelo do EF Core sem executar OnModelCreating. Medido no EF Core 11 RC1: o carregamento do modelo cai de 714 ms para 215 ms com 500 entidades, mas o caminho via MSBuild (que substituiu EFOptimizeContext) é mais lento, modelos desatualizados falham em silêncio e filtros de consulta bloqueiam a geração.
- O que é uma shadow property no EF Core 11, e por que uma apareceu na minha migração?
Uma shadow property é uma coluna que o EF Core rastreia sem uma propriedade CLR correspondente. Veja por que o EF Core 11 as cria (propriedades de FK ausentes, FKs com nome errado, tipos incompatíveis, relacionamentos duplicados), como identificar o tipo BlogId1 em uma migração, como corrigir cada causa e como usar shadow properties de propósito.
- AddDbContextPool vs AddDbContextFactory para executar consultas do EF Core em paralelo
AddDbContextPool entrega um DbContext com escopo por escopo de DI, então não consegue executar duas consultas ao mesmo tempo. AddDbContextFactory e AddPooledDbContextFactory entregam um contexto por chamada, que é o que consultas em paralelo exigem. Medido no EF Core 11 RC 1: a factory com pool cria um contexto em 342 ns e 40 B contra 17 us e 44 KB.
- Correção: Invalid column name 'Value' ao usar SqlQueryRaw<T> para um resultado escalar no EF Core
O EF Core envolve um SqlQuery<T> escalar em uma subconsulta e seleciona uma coluna chamada Value assim que você adiciona First, Where, Max ou Single. Dê o alias AS Value à coluna do seu SQL, ou materialize antes.
- Correção: There is already an object named 'X' in the database depois de resetar as migrações do EF Core
Depois de apagar a pasta Migrations e gerar um novo InitialCreate, o EF Core não sabe que suas tabelas existem. Descarte o banco de dados de desenvolvimento ou registre a nova migração em __EFMigrationsHistory sem executá-la.
- Como definir parâmetros de sessão do PostgreSQL, como search_path ou statement_timeout, em toda conexão do EF Core com o Npgsql
Um SET executado uma única vez é apagado pelo DISCARD ALL assim que o Npgsql devolve a conexão ao pool. Coloque search_path e statement_timeout no pacote de inicialização com as palavras-chave de connection string Search Path e Options, use ALTER ROLE ou um interceptor ConnectionOpened como alternativa, e entenda por que o UsePhysicalConnectionInitializer perde o seu SET silenciosamente.
- EF.Parameter vs EF.Constant em consultas do EF Core 11
EF.Constant embute um valor capturado como literal SQL, EF.Parameter transforma um literal em parâmetro SQL. Mantenha os padrões do EF Core, use EF.Parameter para impedir que árvores de expressão montadas dinamicamente sejam recompiladas a cada chamada, e use EF.Constant apenas para um valor com poucos valores distintos e dados tão desbalanceados que precisam de um plano próprio.
2026 / 09
- Correção: EF Core `Contains` em um `IList<T>` ou `ISet<T>` static readonly não pôde ser traduzido
O EF Core 8, 9 e 10 falham ao traduzir Contains quando a lista é um campo static readonly do tipo IList, ICollection, ISet ou IReadOnlySet. Chame Enumerable.Contains explicitamente ou atualize para o EF Core 11.
- Como adicionar um índice exclusivo em uma propriedade mapeada como JSON no EF Core 11 (SQL Server e SQLite)
HasIndex(...).IsUnique() em um membro ToJson() não garante exclusividade no EF Core 11 RC 1: o SQL Server descarta o IsUnique e o SQLite indexa o documento inteiro. Exponha o valor JSON como uma coluna computada e coloque o índice exclusivo nela.
- Como adicionar um elemento a um array jsonb do PostgreSQL de forma atômica com EF Core e Npgsql
Carregar uma entidade, chamar List.Add e salvar reescreve o documento jsonb inteiro e perde silenciosamente as adições concorrentes. Leve a adição para um único UPDATE com o operador jsonb ||, via ExecuteSqlAsync ou via uma função mapeada dentro de ExecuteUpdateAsync, e torne-a idempotente com uma guarda @>.
- Como usar uma sequence do Oracle para gerar chaves primárias no EF Core
Mapeie uma chave do EF Core para uma sequence do Oracle com UseSequence no Oracle.EntityFrameworkCore 10: o DDL e o SQL de INSERT que o provider realmente emite, como apontar para uma sequence existente ou um trigger legado, por que o uso de aspas e o HiLo confundem as pessoas, e como migrar uma coluna identity para uma sequence sem ORA-00001.
- Como adicionar pluralização personalizada de nomes de tabela ao dotnet ef dbcontext scaffold com IPluralizer
Uma tabela chamada Gas vira uma entidade chamada Ga. Substitua o pluralizador padrão baseado no Humanizer pelo seu próprio IPluralizer, registre-o por meio de IDesignTimeServices no projeto de inicialização e entenda por que TryAddSingleton simplesmente não faz nada ali.
- Como garantir processamento idempotente de mensagens com o EF Core 11 quando duas instâncias do app consomem a mesma mensagem
A verificação de existência no seu handler não é a proteção que você imagina. Coloque um índice único na tabela de inbox, grave o marcador no mesmo SaveChanges da mudança de negócio e deixe o banco de dados escolher o vencedor. Mais a armadilha do ExecuteUpdate que desfaz tudo isso em silêncio.
- Como aplicar convenções de nomenclatura personalizadas para chaves primárias, chaves estrangeiras e índices nas migrações do EF Core 11
Renomeie todos os PK_, FK_, AK_ e IX_ que o EF Core 11 gera com uma única IModelFinalizingConvention, mantenha a prioridade dos nomes explícitos, respeite o limite de tamanho de identificadores e evite a reconstrução do índice clusterizado que a próxima migração gera em um banco de dados existente.
- Migre um app EF Core com Cosmos após a mudança no escape dos ids gerados no EF Core 11
O EF Core 11 deixa de fazer escape de '/', '\', '?' e '#' nos valores de id gerados para o Cosmos DB, então documentos gravados pelo EF Core 8-10 deixam de ser encontrados pela chave. Como descobrir se você é afetado, quando ativar o switch EscapeIllegalCosmosIdCharacters e como reescrever os ids com segurança usando um batch transacional.
- Nível de compatibilidade 150 vs 160 do SQL Server: o que muda nas consultas do EF Core 11
O EF Core 11 agora usa por padrão o nível de compatibilidade 160 em UseSqlServer, o que coloca LEAST, GREATEST e LTRIM/RTRIM com dois argumentos no seu SQL, inclusive em todo Take(n).FirstOrDefault(). Mantenha 160 no SQL Server 2022 e posteriores; fixe UseCompatibilityLevel(150) se algum ambiente ainda roda SQL Server 2019.
- Correção: MigrateAsync e CanConnectAsync do EF Core ficam tentando de novo por 60 segundos em 'Login failed for user'
A verificação de existência do SQL Server no EF Core repete o erro 18456 por um minuto inteiro, com ou sem EnableRetryOnFailure. Falhe rápido, limite o RetryTimeout ou aguarde o EF Core 12.
- Correção: Could not load file or assembly 'Microsoft.Data.SqlClient, Version=7.0.0.0' depois de atualizar o EF Core
O EF Core 11 é compilado contra o Microsoft.Data.SqlClient 7.0.0.0, mas uma cópia 6.x venceu no restore ou na implantação. Remova o pin antigo do SqlClient e reimplante a saída completa.
- Correção: InvalidOperationException: Nullable object must have a value em uma projeção do EF Core 11
O EF Core lança este erro quando um Select lê um NULL do SQL em um int, decimal ou DateTime não anulável. Faça o cast do membro para o tipo anulável e adicione ?? default, ou proteja a navegação com uma verificação de null.
- Como escapar os curingas % e _ em consultas com EF.Functions.Like e StartsWith no EF Core 11
StartsWith, EndsWith e Contains já escapam % e _ para você no EF Core 11, mas EF.Functions.Like não. Veja o SQL que o EF gera, um helper de escape reutilizável e a sobrecarga com escapeCharacter que faz tudo funcionar no SQL Server, no SQLite e no PostgreSQL.
- Coluna json nativa vs nvarchar(max) para armazenar JSON no SQL Server com EF Core 11
Use o tipo json nativo no SQL Server 2025 e no Azure SQL: com ele o EF Core 11 ganha JSON_CONTAINS, JSON_VALUE tipado, modify() in-place e índices JSON. Fique no nvarchar(max) para SQL Server 2019/2022, ferramentas legadas ou um schema que você precisa conseguir reverter.
- Correção: PublishAot junto com EFOptimizeContext esgota a memória durante um build do EF Core
A geração do modelo do EF Core em tempo de build chamava o MSBuild de novo até a RAM acabar. Atualize Tasks e Design para 10.0.10+ e, no EF Core 11, remova EFOptimizeContext.
- Correção: AS JSON option can be specified only for column of nvarchar(max) type in WITH clause
O EF Core emite [col] json '$.path' AS JSON dentro de OPENJSON WITH, e o Azure SQL rejeita com a Msg 13618. Atualize para o EF Core 10.0.11+ ou baixe o nível de compatibilidade do provedor para 160.
- Correção: Complex entry original ordinal '-1' is invalid ao salvar uma coleção complexa com ToJson
Atualize o Microsoft.EntityFrameworkCore para 10.0.10 ou posterior. Antes disso, fazer uma coleção aninhada crescer sob uma segunda propriedade complexa com ToJson quebrava o SaveChanges.
- Correção: The complex type collection must be initialized to a non-null value
No EF Core 10.0.x, definir como null uma propriedade complexa que contém uma coleção de dois elementos dentro de uma coleção complexa ToJson quebra o DetectChanges. Corrigido no 11.0.0-rc.1.
- Correção: MissingMethodException 'AbstractionsStrings.ArgumentIsEmpty' após atualizar o EF Core Tools
dotnet ef lança MissingMethodException em ArgumentIsEmpty porque o Tools 10.0.6 parou de trazer um Microsoft.EntityFrameworkCore.Design compatível. Fixe o Design na sua versão do EF Core.
- Como usar bloqueio pessimista com UPDLOCK e SELECT ... FOR UPDATE no EF Core 11
O EF Core 11 continua sem uma API de bloqueio. Veja como obter um bloqueio de linha real com FromSql: WITH (UPDLOCK, ROWLOCK) no SQL Server, FOR UPDATE no PostgreSQL, a armadilha da subconsulta que amplia o bloqueio em silêncio, NOWAIT e SKIP LOCKED, retentativas de deadlock e o que fazer quando a linha ainda não existe.
- Como escrever um value converter do EF Core 11 que mapeia um null do banco de dados para um valor não nulo no código
Por padrão, o EF Core nunca passa null para um value converter. Aqui está o construtor interno convertsNulls que muda isso, a chamada IsRequired(false) da qual ele depende, por que não funciona com enums e outros tipos de valor, a armadilha WHERE col = NULL que ele cria, e os dois padrões que resolvem o problema sem usar uma API interna.
- O que é um interceptor do EF Core e quando você precisa de um?
Um interceptor do EF Core é uma classe que o EF chama antes e depois de operações como executar um comando ou SaveChanges, e que pode modificá-las ou suprimi-las, não apenas observá-las. Aqui estão os sete pontos de interceptação do EF Core 11, as regras de registro e ciclo de vida, e os casos em que um filtro de consulta ou log é a resposta melhor.
2026 / 08
- Fix: 23505: duplicate key value violates unique constraint em um insert concorrente do EF Core
O verificar-depois-inserir do seu handler não é atômico. Capture PostgresException com SqlState 23505, ou colapse tudo em uma única instrução INSERT ... ON CONFLICT. EnableRetryOnFailure não vai ajudar.
- Correção: CREATE DATABASE permission denied in database 'master' ao rodar dotnet ef database update
O Migrate() do EF Core sempre verifica se o banco de dados existe e o cria se não existir, a partir de uma conexão com master fixa no código. Conceda CREATE ANY DATABASE, corrija o acesso do login ao banco existente, ou gere um script SQL idempotente.
- Correção: Model building is not supported when publishing with NativeAOT em um build .NET MAUI para iOS
Builds de iOS definem DynamicCodeSupport=false, então o EF Core se recusa a construir o modelo mesmo que você nunca tenha ativado o NativeAOT. Publique um modelo compilado mais consultas precompiladas, ou reative o interpretador.
- Como escrever predicados LINQ reutilizáveis que o EF Core consegue traduzir em Where, Select e OrderBy
Um método auxiliar que retorna bool lança "could not be translated". Um Expression<Func<T, bool>> não. Veja como compor, aninhar e reutilizar árvores de expressão no EF Core 11 sem LINQKit, com o SQL real de cada caso.
- Correção: "An exception was thrown while attempting to evaluate a LINQ query parameter expression" no EF Core 11
O EF Core lança isso quando um trecho da sua consulta avaliado no cliente falha enquanto o EF o avalia. Leia InnerException, ative EnableSensitiveDataLogging e mova a checagem de null para fora da lambda.
- Como gerar uma chave primária a partir de uma sequência do banco de dados no insert no EF Core 11
Tire uma chave do IDENTITY e coloque em uma sequência do SQL Server no EF Core 11 com UseSequence: o SQL exato que o EF emite, por que valores de chave explícitos de repente funcionam sem IDENTITY_INSERT, a sequência bigint alimentando uma coluna int e as lacunas que você precisa considerar no design.
- Como usar IDbContextFactory<T> a partir de um serviço singleton no Blazor
Um singleton não pode injetar um DbContext, mas pode injetar IDbContextFactory<T>, porque AddDbContextFactory registra a fábrica como singleton por padrão. Crie e descarte um contexto por chamada, nunca guarde a instância.
- Correção: dotnet tool install --global dotnet-ef lança um erro
Todas as formas pelas quais dotnet tool install --global dotnet-ef falha no SDK do .NET 10, com a mensagem exata e o código de saída de cada uma: já instalado, versão não encontrada, downgrade bloqueado, conflito de shim, feed do NuGet fora do ar e a incompatibilidade de runtime que só quebra depois que a instalação dá certo.
- Como chamar uma stored procedure e mapear seus resultados no EF Core 11
Use FromSql em um DbSet quando a procedure retorna linhas completas de uma entidade, Database.SqlQuery<T> quando retorna uma projeção, e ExecuteSql quando não retorna nada. Nunca encadeie um operador LINQ sobre um EXEC, e nunca leia um parâmetro de saída antes de o leitor ter sido liberado.
- Como renomear uma tabela em uma migração do EF Core 11 sem perder dados
O EF Core gera RenameTable quando você muda o nome da tabela, mas DropTable mais CreateTable quando você renomeia a classe de entidade. Veja como distinguir os dois casos, o truque do ToTable que torna a renomeação de uma classe gratuita, e o bug de renomeação de colunas que troca seus dados em silêncio.
- WebApplicationFactory vs Testcontainers para testes de integração no ASP.NET Core
Escolha a configuração de testes de integração ASP.NET Core pelo que precisa comprovar: rotas HTTP, comportamento do banco de produção ou imagem publicada.
- Como implementar concorrência otimista com um token rowversion no EF Core 11
Adicione um token de concorrência rowversion no EF Core 11: a configuração com [Timestamp] e IsRowVersion, o SQL que o EF realmente emite, como capturar DbUpdateConcurrencyException, banco vence vs cliente vence vs mesclagem, APIs desconectadas com ETags e as cinco armadilhas que desativam tudo silenciosamente.
- Como salvar um enum como string no EF Core 11 com um value converter
Salve enums de C# como strings legíveis em vez de ints no EF Core 11: HasConversion, configuração em massa para todos os enums, a armadilha do nvarchar(max), o problema da ordenação e como migrar uma coluna int existente.
2026 / 07
- Correção: Your startup project doesn't reference Microsoft.EntityFrameworkCore.Design
Adicione Microsoft.EntityFrameworkCore.Design ao projeto de inicialização que o dotnet ef compila, não ao projeto que contém seu DbContext, e passe -s em soluções em camadas.
- Correção: "The model for context 'X' has pending changes" no EF Core 11
O EF Core lança PendingModelChangesWarning quando seu modelo não bate mais com o último snapshot de migração. Adicione a migração ou corrija o falso positivo.
- Como aplicar migrações do EF Core 11 em produção com dotnet ef migrations bundle
Um guia completo para implantar mudanças de esquema do EF Core 11 com bundles de migração: compilar o efbundle no CI, a armadilha do appsettings.json com strings de conexão nomeadas, bundles self-contained e o RID musl do Alpine, o bloqueio de migração desde o EF Core 9, reverter com uma migração alvo e por que transações por migração não salvam você no MySQL.
- Complex types vs entidades owned no EF Core 11: qual você deve escolher?
No EF Core 11, prefira complex types para objetos de valor e recorra a entidades owned apenas quando precisar de uma tabela separada ou de uma coleção mapeada para suas próprias linhas.
- TPH vs TPT vs TPC para mapeamento de herança no EF Core 11: qual você deve escolher?
No EF Core 11, use TPH por padrao para quase toda hierarquia, recorra ao TPC apenas quando voce consulta quase sempre um unico tipo folha e um benchmark prova que ele vence, e use TPT somente quando uma restricao externa obrigar.
- Solução: System.InvalidOperationException: Sequence contains no elements
Essa exceção significa que você chamou .First() ou .Single() em uma sequência vazia. Use FirstOrDefault/SingleOrDefault e verifique o null, proteja a consulta ou corrija por que a fonte está vazia.
- Como registrar o SQL que o EF Core 11 gera
Veja o SQL exato que o Entity Framework Core 11 envia ao seu banco de dados, com valores de parâmetros, usando LogTo, Microsoft.Extensions.Logging e ToQueryString.
- Solução: "The property could not be mapped, because it is not a supported primitive type or a valid entity type" no EF Core 11
O EF Core encontrou uma propriedade que não sabe armazenar. Mapeie como tipo complexo, converta com HasConversion, dê uma chave a ela ou ignore com [NotMapped].
- Como configurar o mapeamento de herança tabela por hierarquia (TPH) no EF Core 11
TPH é a estratégia de herança padrão do EF Core: uma tabela, uma coluna discriminadora. Veja como configurar o discriminador, compartilhar colunas, lidar com propriedades derivadas anuláveis e os detalhes no EF Core 11.
- Como mapear um tipo complexo em vez de uma entidade owned no EF Core 11
Entidades owned carregam uma chave oculta e identidade de referência que conflitam com value objects. Veja como mapear um value object como tipo complexo no EF Core 11, quando trocar e as armadilhas.
- Migrar do seeding com HasData para UseAsyncSeeding no EF Core 11
Um guia passo a passo para mover os dados de seed do HasData para UseSeeding e UseAsyncSeeding no EF Core 11, incluindo a armadilha da migracao DeleteData que apaga suas linhas existentes se voce pular esse cuidado.
- Filtros de consulta nomeados vs um único filtro de consulta global no EF Core 11: qual usar?
Ambos geram o mesmo SQL. Recorra aos filtros nomeados apenas quando precisar desativar um predicado de forma independente; um único filtro combinado é mais simples para uma única preocupação no EF Core 11.
- Solução: "The LINQ expression could not be translated" no EF Core 11
O EF Core 11 lança isso quando um Where ou OrderBy chama um método que ele não consegue converter em SQL. Reescreva o predicado com operadores traduzíveis, ou traga os dados para o cliente com AsEnumerable primeiro.
- Correção: "The required column 'X' was not present in the results of a 'FromSql' operation" no EF Core 11
O EF Core lança isso quando seu SQL bruto não retorna todas as colunas que a entidade mapeia, ou os nomes não coincidem. Retorne todas as colunas mapeadas com nomes coincidentes, ou consulte um tipo escalar ou sem chave.
- Como usar filtros de consulta nomeados para soft delete e multi-tenancy no EF Core 11
Aplique dois filtros de consulta globais independentes à mesma entidade no EF Core 11: um filtro de soft delete e um filtro de tenant, cada um nomeado para que você possa desativar um sem o outro com IgnoreQueryFilters.
2026 / 06
- HasData vs UseSeeding para popular dados no EF Core 11: qual voce deve usar?
Use HasData apenas para dados de referencia fixos e proprios do modelo. Use UseSeeding e UseAsyncSeeding para todo o resto no EF Core 11. Uma comparacao lado a lado com as regras que forcam a decisao.
- Corrigir: FOREIGN KEY constraint failed ao excluir uma entidade no EF Core 11
O EF Core lança FOREIGN KEY constraint failed porque o pai ainda tem dependentes que o banco de dados se recusa a deixar órfãos. Carregue os filhos, torne o relacionamento opcional ou configure OnDelete.
- Corrigir: No service for type 'Microsoft.EntityFrameworkCore.DbContextOptions' has been registered
O EF Core lança isso quando AddDbContext nunca rodou, rodou depois de Build ou o construtor do contexto recebe o DbContextOptions errado. Registre antes de Build e use DbContextOptions<SeuContexto>.
- Correção: The seed entity for entity type 'X' cannot be added because a non-zero value is required for property 'Id'
O HasData semeia uma entidade com chave gerada pelo banco mas sem valor explícito. Dê a cada linha um Id estável diferente de zero, ou use UseSeeding para chaves geradas.
- Como fazer paginação por keyset (cursor) no EF Core 11
Substitua Skip/Take por uma cláusula WHERE que avança além da última linha que você viu. Ordene por uma chave totalmente única, carregue os valores da última linha como um cursor, e o EF Core 11 transforma a próxima página em um index seek em vez de um scan com OFFSET.
- Como mapear e consultar colunas JSON no EF Core 11
Mapeie um tipo aninhado para uma única coluna JSON com ComplexProperty(...).ToJson(), deixe o EF Core 11 armazená-lo no tipo json nativo do SQL Server 2025 e depois consulte-o com LINQ que se traduz em JSON_VALUE, JSON_CONTAINS e JSON_PATH_EXISTS.
- Como popular um relacionamento muitos-para-muitos no EF Core 11
Popule a tabela de junção de um relacionamento muitos-para-muitos no EF Core 11: as chaves sombra implícitas que você precisa nomear por conta própria, o padrão UsingEntity HasData e a alternativa em runtime UseSeeding que funciona com skip navigations.
- Como popular dados com UseSeeding e UseAsyncSeeding no EF Core 11
Popule dados de referência do jeito certo no EF Core 11 com UseSeeding e UseAsyncSeeding: onde configurar, quando eles rodam, a verificação de idempotência que você não pode pular e por que precisa implementar ambos.
- AsNoTracking vs AsNoTrackingWithIdentityResolution no EF Core 11: qual você deve usar?
Use AsNoTracking por padrão em consultas somente leitura. Recorra a AsNoTrackingWithIdentityResolution apenas quando o grafo de resultados contém a mesma entidade mais de uma vez e seu código depende de receber uma única instância compartilhada.
- O novo analisador EF1004 do EF Core 11 detecta um erro assíncrono silencioso
O EF Core 11 Preview 5 traz o analisador EF1004. Ele sinaliza ToAsyncEnumerable() em um IQueryable para que você não enumere uma consulta de banco de dados de forma síncrona dentro de um await foreach.
- Correção: The entity type 'X' requires a primary key to be defined no EF Core 11
O EF Core não encontra uma chave para o seu tipo. Nomeie uma propriedade Id ou {Type}Id, adicione [Key], chame HasKey ou, se for uma view ou SQL cru, chame HasNoKey.
- Correção: The configured execution strategy 'SqlServerRetryingExecutionStrategy' does not support user-initiated transactions
EnableRetryOnFailure entra em conflito com BeginTransaction. Envolva toda a transação em db.Database.CreateExecutionStrategy().ExecuteAsync(...) para que ela seja repetida como uma unidade.
- Como usar os interceptadores do EF Core 11 para auditoria
Marque colunas CreatedBy/ModifiedOn e escreva um rastro completo de mudanças com um ISaveChangesInterceptor no EF Core 11, incluindo os detalhes de injeção de dependência, usuário atual e ExecuteUpdate.
- EF Core ExecuteUpdate versus carregar entidades e SaveChanges: qual você deve usar?
Um guia de decisão e um benchmark real para o EF Core 11: use ExecuteUpdate para escritas baseadas em conjunto por predicado, e o caminho carregar-depois-SaveChanges apenas quando você precisa do rastreador de mudanças, dos interceptadores ou de um grafo de objetos complexo.
- Migrar do EF Core 6 para o EF Core 11: as mudanças incompatíveis que realmente doem
Um guia de migração com versões fixadas, do EF Core 6.0 ao EF Core 11.0, percorrendo as mudanças incompatíveis do EF7, 8, 9, 10 e 11 que quebram apps reais: Encrypt=True, Contains com OPENJSON, PendingModelChangesWarning, a coluna json nativa e a divisão do SqlClient 7.0.
- Correção: ObjectDisposedException: Cannot access a disposed context instance
Sua tarefa fire-and-forget capturou um DbContext com escopo de requisição que o escopo de DI já havia liberado. Resolva um contexto novo dentro da tarefa com IServiceScopeFactory ou IDbContextFactory.
- EF Core 11 Preview 4: Pare de redigitar --project e --startup-project com .config/dotnet-ef.json
O EF Core 11 Preview 4 permite que a ferramenta dotnet ef leia valores de opções padrão de um arquivo .config/dotnet-ef.json, para que soluções divididas não forcem mais você a passar --project e --startup-project em todo comando.
- Como usar a divisão de consultas para evitar uma explosão cartesiana no EF Core 11
Quando você faz Include de duas coleções irmãs, o EF Core 11 retorna o produto cartesiano e a contagem de linhas explode. Veja como o AsSplitQuery resolve isso, como ativá-lo globalmente e os detalhes de consistência e ordenação que você deve observar.
2026 / 05
- Como usar ExecuteUpdate e ExecuteDelete para escritas em massa no EF Core 11
Um guia completo de ExecuteUpdate e ExecuteDelete no EF Core 11: o SQL que eles geram, a armadilha do rastreador de mudanças que sobrescreve sua escrita em massa silenciosamente, transações, controle de concorrência com a contagem de linhas afetadas e os setters por delegate do EF Core 10 que permitem montar atualizações condicionais com simples instruções if.
- EF Core 11 Preview 4: as colunas de período das tabelas temporais finalmente podem ser propriedades reais
O EF Core 11 Preview 4 derruba a antiga restrição de propriedade shadow nas tabelas temporais do SQL Server. PeriodStart e PeriodEnd agora podem ser propriedades CLR comuns, configuradas com lambdas HasPeriodStart e HasPeriodEnd fortemente tipadas.
- Consultas compiladas do EF Core vs SQL bruto vs Dapper: qual vence no caminho de leitura?
Para caminhos com muitas leituras no .NET 11, EF Core puro com AsNoTracking fica dentro de ~5% do Dapper. Use consultas compiladas em um caminho quente de linha unica perfilado, e Dapper apenas para a menor latencia ou para o SQL que o LINQ nao consegue expressar.
- IEnumerable vs IAsyncEnumerable vs IQueryable em C#: qual o método deve retornar?
Três interfaces de sequência, três modelos de execução. Use IQueryable quando um banco de dados puder traduzir a consulta, IAsyncEnumerable quando o produtor for assíncrono e você quiser transmitir, IEnumerable para tudo o mais em memória.
- EF Core 11 vs Dapper para inserções em massa: benchmark real
Para inserções em massa no .NET 11, nem EF Core nem Dapper vencem. SqlBulkCopy vence. Este é o benchmark, o porquê e o lugar que cada ferramenta merece.
- Fix: A possible object cycle was detected
System.Text.Json se recusa a serializar grafos com referências circulares. Configure ReferenceHandler.IgnoreCycles, projete para um DTO, ou marque o ponteiro de volta com [JsonIgnore]. Preserve é último recurso.
- Correção: SqlException: Timeout expired durante migrações do EF Core
As migrações usam o DbContext de tempo de design, não o seu CommandTimeout de runtime. Defina o timeout via UseSqlServer(o => o.CommandTimeout(...)), o Command Timeout da string de conexão, ou Database.SetCommandTimeout antes de Migrate().
- Fix: dotnet ef migrations add falha com 'Unable to create an object of type DbContext'
As ferramentas em tempo de design do EF Core não conseguiram instanciar seu DbContext. Exponha um host com WebApplication.CreateBuilder, aponte para o startup project correto ou implemente IDesignTimeDbContextFactory.
- Correção: The instance of entity type cannot be tracked because another instance with the same key value is already being tracked
EF Core 11 lança essa exceção quando dois objetos compartilham a chave primária dentro de um DbContext. Desanexe o antigo ou atualize-o no lugar. AsNoTracking na leitura evita a colisão.
- Correção: A second operation was started on this context instance before a previous operation completed
EF Core lança esta exceção quando dois await rodam em paralelo sobre o mesmo DbContext. Aguarde cada chamada de forma sequencial, ou obtenha um DbContext novo por unidade de trabalho concorrente via IDbContextFactory.
- Correção: System.InvalidOperationException: No connection string named 'DefaultConnection' could be found
Se GetConnectionString retorna null no .NET 11, o seu appsettings.json não tem a chave, não está sendo copiado para a saída do build, ou o arquivo de ambiente errado está sendo selecionado. Três checagens resolvem 95% dos casos.
- Como detectar consultas N+1 no EF Core 11
Um guia prático para identificar consultas N+1 no EF Core 11: como o padrão aparece em código real, como expô-lo via logs, interceptadores de diagnóstico, OpenTelemetry e um teste que quebra o build quando um caminho crítico regride.
- Como usar consultas compiladas no EF Core em hot paths
Um guia prático sobre consultas compiladas no EF Core 11: quando EF.CompileAsyncQuery realmente vence, o padrão de campo estático, as armadilhas com Include e tracking, e como medir antes e depois para provar que valeu a pena a cerimônia extra.
- Como escrever testes de integração contra um SQL Server real com Testcontainers
Um guia completo para rodar testes de integração de ASP.NET Core contra um SQL Server 2022 real usando Testcontainers 4.11 e EF Core 11: configuração de WebApplicationFactory, IAsyncLifetime, troca do registro do DbContext, aplicação de migrations, paralelismo, limpeza com Ryuk e armadilhas de CI.
2026 / 04
- Como aquecer o modelo do EF Core antes da primeira consulta
O EF Core constrói seu modelo conceitual de forma preguiçosa no primeiro acesso ao DbContext, o que faz a primeira consulta de um processo recém-iniciado ser várias centenas de milissegundos mais lenta do que qualquer consulta seguinte. Este guia cobre as três soluções reais no EF Core 11: um IHostedService de inicialização que toca Model e abre uma conexão, dotnet ef dbcontext optimize para entregar um modelo pré-compilado, e as armadilhas da chave de cache que reconstroem o modelo silenciosamente mesmo assim.
- Como simular o DbContext sem quebrar o rastreamento de alterações
Simular o DbContext diretamente quebra silenciosamente o ChangeTracker, e por isso a Microsoft desencoraja essa prática. Este guia mostra os dois padrões que realmente funcionam no EF Core 11: SQLite em memória com uma conexão mantida aberta para que o ChangeTracker real seja executado, e o padrão repositório, que tira o EF Core inteiramente do teste.
- Como usar IAsyncEnumerable<T> com EF Core 11
As queries do EF Core 11 implementam IAsyncEnumerable<T> diretamente. Veja como fazer streaming de linhas com await foreach, quando preferir a ToListAsync, e as pegadinhas envolvendo conexões, tracking e cancelamento.
- Como usar records com EF Core 11 corretamente
Um guia prático para misturar records do C# e EF Core 11. Onde records se encaixam, onde eles quebram o change tracking, e como modelar value objects, entidades e projeções sem brigar com o framework.
- EF Core 11 poda joins de referência desnecessários em split queries
EF Core 11 Preview 3 remove joins to-one redundantes de split queries e derruba chaves ORDER BY desnecessárias. Um cenário relatado ficou 29% mais rápido, outro 22%. Aqui está como o SQL fica agora.
- EF Core 11 adiciona GetEntriesForState pra pular DetectChanges
EF Core 11 Preview 3 introduz ChangeTracker.GetEntriesForState, um enumerador filtrado por state que evita um pass extra de DetectChanges em hot paths como interceptors de SaveChanges e hooks de audit.
- EF Core 11 liga transactional batches de Cosmos DB por padrão
EF Core 11 agrupa writes de Cosmos DB em transactional batches por container e partition em cada SaveChanges, dando atomicidade best-effort e menos roundtrips sem mudanças de código.
- EF Core 11 permite criar e aplicar uma migração em um único comando
O comando dotnet ef database update agora aceita --add para criar e aplicar uma migração em um único passo. Veja como funciona, por que importa para containers e .NET Aspire, e o que observar.
- EF Core 11 adiciona busca vetorial nativa do SQL Server com índices DiskANN
EF Core 11 Preview 2 suporta o VECTOR_SEARCH() do SQL Server 2025 e os índices vetoriais DiskANN diretamente do LINQ. Veja como configurar o índice, executar consultas aproximadas, e o que muda da abordagem VectorDistance do EF Core 10.