2010-06-03 19 views
5

Escribo una aplicación independiente y pensé usar Entity Framework para almacenar mis datos.C# integer generación de clave primaria utilizando Entity Framework con el archivo de base de datos local (Sdf)

Por el momento, la aplicación es pequeña, así que puedo usar un archivo de base de datos local para comenzar.

El hecho es que el archivo de base de datos local no tiene la capacidad de auto generar claves primarias enteras como lo hace SQL Server.

No es un problema de la definición de la columna ID como "identificar" al crear la tabla, pero cuando se trata de llamar al método SaveChanges que arroja la siguiente excepción:

{ "claves generadas por el servidor y los valores generados por el servidor no son compatibles con SQL Server Compact. "}

¿Alguna sugerencia de cómo administrar las claves principales para entidades en un archivo de base de datos local que será compatible con SQL Server en el futuro?

Gracias, Ronny

+1

¿Qué versión de Visual Studio y SQL Server Compact Edition está utilizando aquí? –

+0

VS 2008 .Net Framework 3.5. Sdf versión 3.5.5692.0 – Ronny

Respuesta

2

Hay tres técnicas generales que se me ocurre para que la base de datos no tiene auto-número.

1) Haga un MAX (ID_column) +1 primero para obtener el siguiente valor de ID. Sin embargo, debe tener en cuenta los problemas de múltiples usuarios aquí. Además, los números no son de un solo uso. Si elimina una fila y agrega una nueva, obtendrá la misma ID. Esto puede o no ser un problema para ti.

2) Use un GUID. Prácticamente se garantiza que será único, pero tiene una gran huella para una columna de ID.

3) Use una tabla de claves separada que contenga la última ID que se le asignó. Esto garantiza que los números nunca se reutilicen, pero agrega una tabla adicional en su base de datos.

Cuestiones relacionadas