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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top