2010-06-21 12 views
6

Estoy utilizando Entity Framework 4.0Entity Framework 4.0 Uso Valor base de datos predeterminada

Muchas de nuestras tablas tienen una columna llamada ROWID, utilizado por el DBA para rastrear cosas. La columna es NON NULLABLE tiene un valor predeterminado de base de datos que se asigna a una función.

El problema es que el modelo EDMX requiere que esta propiedad tenga un valor en la entidad, dificultando la construcción del objeto.

He leído muchas publicaciones sobre cómo ajustar manualmente los archivos EDMX y SSDL para que esto funcione. Eso no es factible para nuestro equipo.

¿Hay una mejor solución a este problema, que no sea hacer la columna NULLABLE en la base de datos? No me importa recuperar el valor, solo quiero que la base de datos pueda establecerlo por sí misma.

Respuesta

2

Si RowID no necesita ser leído o escrito en el contexto de su aplicación, entonces no pertenece en absoluto a su Modelo de entidad. Simplemente elimínelo de su Modelo de entidad utilizando Designer (clic derecho> Eliminar) y deje que la base de datos lo administre.

+0

El problema es el ROWID es un FK en otras mesas, así que tengo que ser capaz de obtener y usarlo al crear entidades secundarias. – ctorx

6

Debe establecer StoreGeneratedPattern = "Computed" directamente en el SSDL (XML detrás del modelo).

1 - hacer clic derecho en el modelo

2 - Seleccione "Abrir con" => XML Editor

3 - Mira para la asignación de una de las tablas bajo la sección Modelo de contenido

4 - Añadir el atributo = StoreGeneratedPattern "computarizada" a la columna ROWID

5 - hacer un reemplazo global en su archivo para cada mesa tendrá la definición ROWID con el StoreGeneratedPattern = "computarizada"

NOTA: Si utiliza el Asistente de actualización del modelo, deberá actualizar manualmente el XML nuevamente. Mi recomendación: no use el asistente o guarde las líneas xml originales y modificadas en un archivo de texto aparte para que las tenga disponibles para hacer una sustitución global después de ejecutar el asistente.

Para obtener más información se refieren a este artículo: http://msdn.microsoft.com/en-us/library/dd296755(v=vs.90).aspx

+1

Estoy usando Entity Framework 5, y cuando configuro StoreGeneratedPattern = Computed y luego uso el asistente "Actualizar el modelo desde la base de datos ...", el campo * no * se restablece. – DaveD

Cuestiones relacionadas