EFFluentify convierte las anotaciones de EF Core a Fluent API en un comando
La herramienta, publicada en NuGet y con código abierto, traduce los atributos de EF Core a clases IEntityTypeConfiguration y puede borrar las anotaciones originales.

EFFluentify es una herramienta de línea de comandos que traduce las Data Annotations de EF Core a configuración por Fluent API en una sola pasada y, si se le pide, borra los atributos originales. Su código está en GitHub y el paquete está publicado en NuGet. El autor la escribió a mano, sin generación por IA, y lo cuenta con guasa en el propio anuncio.
El problema que ataca lo conoce cualquiera que haya mantenido un proyecto EF Core un tiempo: la configuración acaba repartida. Unas entidades llevan atributos sobre la clase, otras se configuran en OnModelCreating y algunas tienen las dos cosas, con lo que ya nadie sabe cuál gana. Las anotaciones no expresan todo lo que permite el Fluent API, y la recomendación habitual es mover todo a clases IEntityTypeConfiguration. Hacerlo a mano, proyecto a proyecto, es tedioso y se presta a errores finos.
Qué hace distinto
No es un buscar y reemplazar sobre texto. Trabaja con Roslyn y analiza el C# real, así que entiende los tipos, la nulabilidad y las relaciones tal y como están declaradas. Las relaciones se resuelven además entre todas las entidades: un [ForeignKey] en un lado se empareja con la navegación inversa del otro y sale un HasOne(...).WithMany(...).HasForeignKey(...) completo en lugar de media relación. La salida se verifica compilándola; la suite de pruebas compila lo que emite el generador y fija el comportamiento con ficheros de referencia.
Un ejemplo: una clase User con [Table], [Index], [DatabaseGenerated], [Required], [MaxLength], [NotMapped], [ConcurrencyCheck] y [ForeignKey] acaba como una UserConfiguration sellada e interna con ToTable, HasIndex, Ignore, HasOne y las llamadas a Property que toquen. Si se activa la limpieza, los atributos desaparecen del archivo original, que queda como POCO y con una copia .bak al lado.
Instalación y uso
Necesita el .NET 9 SDK. Se instala desde el paquete en NuGet como herramienta global con dotnet tool install --global EFFluentify.Tool, y se ejecuta apuntando a los modelos: effluentify --input ./Models --out ./Configurations. Entre las opciones están --manyFiles, que genera un archivo por entidad en vez de uno solo; --removeAnnotationsFromMyOriginal, que limpia los originales dejando copia de seguridad; y --namespace para fijar el espacio de nombres raíz, que por defecto es EFFluentify.Configurations. Si se omite --out, previsualiza el resultado en consola en vez de escribir en disco.
En cuanto a cobertura, admite a nivel de entidad [Table], [Index], [Key], [Keyless], [NotMapped], [Comment] y [ForeignKey], y a nivel de propiedad [Required], [MaxLength] y [StringLength], [Precision], [Column], [DefaultValue], [ConcurrencyCheck], [Timestamp], [Unicode] y [DatabaseGenerated], además de traducir los tipos anulables a IsRequired(false).
Para quien tenga esa migración pendiente, la herramienta hace en un comando lo que de otro modo son horas de trabajo mecánico y revisiones. El autor pide feedback sobre qué debería cubrir a continuación, así que la lista de anotaciones soportadas no está cerrada.
