Cómo comprobar si una entidad ya está rastreada por el DbContext antes de adjuntarla en EF Core
Usa DbSet.Local.FindEntry(key) para preguntarle al change tracker si hay una entidad rastreada con una clave dada, sin viaje a la base de datos ni recorrido. Por qué Entry(entity).State miente para esta pregunta, por qué Find consulta la base de datos y un helper AttachOrMerge probado para EF Core 10.