Pregunta

Estoy usando EF 4.1 CodeFirst para crear mi DB. Parece que EF está creando todas las claves primarias con un índice agrupado, lo cual no es óptimo para nosotros en un caso (posiblemente más casos). ¿Hay alguna forma de decirle a EF que genere esta tabla con la clave primaria como un índice no agrupado?

Por supuesto, podríamos hacerlo manualmente utilizando script personalizado después de que la base de datos ya esté creada, pero tenemos muchas claves extranjeras que apuntan a esta tabla, sería una solución bastante no óptima si hay una forma mejor y más directa de hacerlo. Lo mismo ya durante la creación de DB. Cualquier ayuda apreciada

¿Fue útil?

Solución

No, no hay forma de controlar el código SQL primero que genera primero: es el código primero y su filosofía actual (la mala en realidad) es: no sabe nada sobre la base de datos y no se molesta.

La única forma de cambiar este comportamiento es escribir inicializador de base de datos personalizado, usar consultas de base de datos personalizadas para buscar el índice creado, eliminar ese índice y crear uno nuevo. Algunas referencias:

El inicilizador hará que su solución dependa del producto del servidor de base de datos concretos.

Otros consejos

Sí, hay una manera que puede especificar para no crear índices agrupados. Si usa migraciones de código, se genera un archivo *.cs para completar su base de datos. En este archivo, puede especificar aparte de la clave principal para cada tabla, si es necesario crear con índices agrupados.

  .PrimaryKey(t => t.MID, null, true)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top