Déjame ponerlo en otro punto de vista. El mantenimiento de la base de datos de Entity Framework es completamente inútil en cualquier proyecto de base de datos empresarial o grande.
Los problemas son:
Actualizaciones automáticas de esquemas. Esto no es absolutamente lo que quiero, ya que viola totalmente los fundamentos del mantenimiento de la base de datos. Los problemas son: (a) alguien que ejecuta una versión más nueva actualiza la base de datos en lugar de obtener un problema y (b) las actualizaciones se programan con el dba normalmente haciendo una copia de seguridad PRIMERO. Por lo tanto, las actualizaciones automáticas son inútiles.
La creación de Db solo funciona en casos extremos básicamente degenerados. Ni siquiera intente utilizar funciones avanzadas de la base de datos, independientemente de cuál. Ejemplo de servidor SQL: campos incluidos en índices, filtros en índices, particionamiento, compresión, reglas de validación para campos.
Migración: asume nuevamente los casos extremos degenerados: sin transformación de datos o actualización de varios pasos fácilmente. Ejemplo: la Tabla X tiene un campo histórico de "usuario" que registra que el usuario hace algo. La nueva configuración tiene una tabla de usuario, por lo que es necesario crear la tabla de usuario, luego crear los usuarios, luego crear el campo de referencia del usuario en la tabla x, luego actualizar esto con el usuario que es de la tabla de usuarios, luego eliminar el campo de usuario.
La única forma sensata de lidiar con estos escenarios son los scripts de generación y migración y las versiones adecuadas.
Ahora, SSDT, que es una gran herramienta para versionar una versión de base de datos específica mucho mejor que Entity Framework porque realmente funciona. Como en: registra todas las características. En ninguna de las bases de datos que tengo, podría usar el código primero, porque siempre tenemos índices filtrados al menos;) EF ni siquiera me llevaría al 10% de lo que necesito.
Nuestro enfoque es:
Diseñe la base de datos en la base de datos, luego sincronícela con un módulo SSDT que se registre. La sincronización de esquema permite a los desarrolladores actualizar su versión rápidamente. Siempre hay una base de datos maestra autorizada con la versión actual en algún lugar (en un servidor especial), por lo que tenemos una versión de referencia para trabajar.
Genere scripts delta según sea necesario para las versiones que también se versionen y tengan un buen mecanismo para implementarlas en una base de datos.