Agregué EntityFramework.Migrations (Beta 1) a una aplicación Code-First existente que está pasando por algunos cambios (tanto para la capacidad de migración como para un ajuste más preciso de las tablas que estoy generando a partir de mi API de primer código) y me encontré el escenario GETDATE().Posible el campo DateTime predeterminado para GETDATE() con Entity Framework Migrations?
Ya estaba usando una clase de inicializador personalizada en mi DbContext para ejecutar scripts SQL para establecer algunos campos y crear índices en mi base de datos. Un puñado de mis scripts AlterTable son primordiales solo para configurar campos con valores predeterminados (como ciertos campos DateTime que se configuran en GETDATE()). Realmente esperaba EntityFramework.Migrations tendría una respuesta para esto ya que puedes especificar fácilmente DefaultValue, pero hasta ahora no estoy viendo uno.
¿Alguna idea? Realmente estaba esperando que haciendo lo siguiente funcionaría mágicamente. (Es 'unicornio mágico', después de todo)
DateCreated = c.DateTime(nullable: false, defaultValue: DateTime.Now)
Por desgracia, y lógicamente, se establece el valor de mi defecto a la hora en que se ejecutó el comando Update-Database
.
No estoy buscando en conseguir en las teorías que giran alrededor' ... usando un ORM, no deberías poner lógica en la base de datos ... '. Entiendo que. Solo quiero asegurarme de que nadie arroje un ejemplo de POCO con DateTime.Now en el constructor :) – adammokan
tiene probablemente un similar y encontró una buena solución. Espero que esto ayude: http://stackoverflow.com/questions/9830216/ef-4-3-1-migration-exception-altercolumn-defaultvaluesql-creates-same-default/ –