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.