2010-08-25 3 views
8

Ho progettato un modello di dati di entità con due entità tra le quali esiste una relazione molti a molti. Quando eseguo l'auto-generazione del codice SQL per generare il database per questo modello, ha generato una tabella (due colonne) per tenere traccia di questa associazione many-to-many. Tuttavia, questa tabella ha un PRIMARY KEY NONCLUSTERED su entrambe le colonne.Entity Framework Molti-a-molti cluster rispetto a non cluster

Poiché desidero che funzioni su SQL Azure che non apprezza le tabelle con indici non cluster, mi chiedevo se esiste un buon modo per dire alla generazione del codice di generare indici clusterizzati? Grazie!

+0

Hai provato a dargli una chiave surrogata? – Nix

+0

Sono nella stessa barca. Mi rendo conto che questa è una vecchia domanda, ma non sembra che abbia avuto risposta. Azure continua a non supportare chiavi non cluster che EF genera. – Allan

risposta

3

Ho un altro file chiamato Model.indexes.sql che contiene script per creare indici aggiuntivi oltre a quelli di base che EF genera, come quelli per le ottimizzazioni delle prestazioni.

Anche se questo non è ideale, ho aggiunto in questa goccia un indice e crea per ogni associazione EF per convertire gli indici non cluster in quelli indicizzati:.

ALTER TABLE [dbo] [MyAssociation] CADUTA CONSTRAINT [PK_MyAssociation] GO ALTER TABLE [dbo]. [MyAssociation] ADD CONSTRAINT [PK_MyAssociation] CHIAVE PRINCIPALE CLUSTERED ([Table1_Id], [Table2_Id] ASC); GO

Questo viene eseguito dopo ogni "Genera database dal modello ...". Mi piacerebbe una soluzione più elegante.