2010-08-25 13 views
8

Zaprojektowałem model danych encji z dwoma podmiotami, pomiędzy którymi istnieje wiele do wielu relacji. Kiedy automatycznie generuję kod SQL w celu wygenerowania bazy danych dla tego modelu, wygenerowano tabelę (dwie kolumny), aby śledzić powiązanie wielu do wielu. Jednak ta tabela ma klucz podstawowy NIEPOPRAWNY w obu kolumnach.Entity Framework Wiele-do-wielu Indeks klastrowy vs. Nieklastrowy

Ponieważ chcę, aby to działało na SQL Azure, który nie lubi tabel z wyłącznie nieklastrowanymi indeksami, zastanawiałem się, czy istnieje dobry sposób na wygenerowanie kodu generującego indeksy klastrowe? Dzięki!

+0

Czy próbowałeś podać mu klucz zastępczy? – Nix

+0

Jestem w tej samej łodzi. Zdaję sobie sprawę, że jest to stare pytanie, ale wydaje się, że nie otrzymaliśmy odpowiedzi. Azure nadal nie obsługuje kluczy nieklastrowych generowanych przez EF. – Allan

Odpowiedz

3

Mam inny plik o nazwie Model.indexes.sql, który zawiera skrypty do tworzenia dodatkowych indeksów poza podstawowymi EF generuje, takich jak te dla optymalizacji wydajności.

Chociaż to nie jest idealny, to dodaje się do tego spadku indeks i utworzyć dla każdego związku EF do przekształcenia nieklastrowanym indeksy do indeksowanych nich.

ALTER tabeli [dbo] [MyAssociation] Wiązanie UPUŚĆ [PK_MyAssociation] GO ALTER TABLE [dbo]. [MyAssociation] ADD CONSTRAINT [PK_MyAssociation] KLUCZ GŁÓWNY PRIMARY ([Table1_Id], [Table2_Id] ASC); GO

Wykonuje się po każdym "Wygeneruj bazę danych z modelu ...". Chciałbym bardziej eleganckie rozwiązanie.