Cómo detener el código EF4.1 Primero para crear un índice culinado para la entidad PK
Pregunta
Con la siguiente clase de entidad simple, EF4.1 Code-First creará un índice agrupado para el PK UserId
columna al intializar la base de datos.
public class User
{
[Key]
public int UserId { get; set; }
public int AppId { get; set; }
public string UserName { get; set; }
}
Por el bien del rendimiento, mis objetivos de diseño es mantener los generados Users
tabla física agrupada según el AppId
coulmn no al PK.
En mi clase de inicializador, he intentado dejar caer manualmente el índice agrupado de PK autogenerado y crear cualquier índice agrupado que necesite, pero no hay idea aquí para predecir el nombre autogenerado PK__Users__25518C17
para el índice!
Soy nuevo en el código de código primero, y realmente no sé si hay alguna solución para mis objetivos de diseño.
Gracias por adelantado
Solución
No necesita predecir el nombre del índice generado automático. Solo necesita seleccionar el nombre del índice. Para SQL Server puede usar consultas como:
SELECT I.Name
FROM sys.indexes AS I
INNER JOIN sys.tables AS T ON
I.object_Id = T.object_Id
WHERE I.is_primary_key = 1
AND T.Name = 'Users'
Una vez que obtenga el nombre en su inicializador personalizado, puede alterar el índice antiguo y crear uno nuevo.