2010-08-27 17 views
9

Me puede estar faltando algo, pero una base de datos de SQL Server 2008 R2 generada por Entity Framework 4 pierde los valores predeterminados que configuré a través del diseñador de EF.Entity Framework 4 y valores predeterminados

¿Alguna idea de lo que podría estar haciendo mal?

Respuesta

12

La razón es que los valores predeterminados que puede establecer en el modelo conceptual y los valores predeterminados de la base de datos son sin relación.
Consideremos una situación típica en la que ya tiene una base de datos que tiene valores predeterminados establecidos en columnas, por el mismo token, que NO recogerá el valor predeterminado en el esquema de la tienda o por la propia entidad.

Por lo tanto, si define un valor predeterminado para una propiedad de una entidad en un modelo que se utilizará para generar un esquema de base de datos, es importante saber que ninguno de los valores predeterminados que defina para la propiedad de una entidad empujado a la base de datos.

Sin embargo, vale la pena mencionar que la plantilla predeterminada de generación de código EntityObject T4 y la plantilla predeterminada de POCO Entities establecerán el valor predeterminado de esa propiedad en la clase generada.

Puede verificar esto al echar un vistazo más de cerca a yourModelName.edmx.sql archivo que ha sido generada por VS2010 vez que haga clic en "Generar base de datos desde Modelo ...". Como se puede ver, no hay tal cosa como esta en que:
Agregar restricción DEFAULT "Valor predeterminado" PARA YourColumnName

+0

Gracias por la respuesta concisa. Tiene mucho sentido. – Shaun

+0

Tiene sentido, aunque hace que las migraciones de código sean más difíciles. Agregue un campo no anulable a una tabla existente, el script de migración generado al comparar los dos esquemas en SQL Studio no funcionará. Tiene que hacerse manualmente de nuevo. – simbolo