Entity Framework EnableSensitiveDataLogging

Wilson Santos
2 min readAug 14, 2019

Dica rápida para um erro chato do no E.F, referente ao controle de estado do contexto, se por algum motivo existir duas entidades com o mesmo Id o Entity Framework vai lançar uma exception sobre isso ;

Exception: The instance of entity type ‘Participant’ cannot be tracked because another instance with the same key value for {‘ParticipantId’} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using ‘DbContextOptionsBuilder.EnableSensitiveDataLogging’ to see the conflicting key values.

Seguindo a dica da própria excpetion habilitei EnableSensitiveDataLogging e assim podemos ver qual é o valor da chave em questão, isso ajuda no Debug.

Para isso vamos na classe de contento da Aplicação(aquela que herda de DbContext) e sobrescrevemos o método OnConfiguring conforme abaixo;

então teremos erros conforme abaixo,

One or more errors occurred. (The instance of entity type ‘CommunicationResult’ cannot be tracked because another instance with the key value ‘{CommunicationResultId: db889861–5680–4bbc-a00c-1baee78a1195}’ is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached.) — -> System.InvalidOperationException: The instance of entity type ‘CommunicationResult’ cannot be tracked because another instance with the key value ‘{CommunicationResultId: db889861–5680–4bbc-a00c-1baee78a1195}’ is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached.

não se esqueçam que essas informações são sensíveis e não devem ser exibidas para o usuário , precisamos tratar esses erros e gravar logs com esse conteúdo.

Sempre use em produção , a configuração abaixo para evitar expor

Até mais

--

--

Wilson Santos
Wilson Santos

Written by Wilson Santos

Nos últimos 15 anos, venho desenvolvendo , aperfeiçoando e integrando sistemas, sou apaixonado por desenvolver e ensinar, nem tanto por escrever!.

No responses yet