Entity Framework EnableSensitiveDataLogging
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