2009-12-18 11 views
12

Przeprojektowanie dużej bazy danych w naszej firmie szeroko wykorzystuje złożone klucze podstawowe w bazie danych.Złożone klucze DB z Entity Framework 4.0

Zapomnienie o skutkach wydajności, spowoduje to trudności podczas pracy z tym db w Entity Framework 4.0? Struktura bazy danych raczej się nie zmieni i nie szukam debaty "filozoficznej", ale jakie są jej praktyczne skutki?

Zgodnie z Jeremy Miller, "Klucz złożony sprawia, że ​​każdy rodzaj mapowania obiektów/relacji i utrzymywania jest ogólnie trudniejszy." ale tak naprawdę nie mówi dlaczego. Czy to uświadamia, w jaki sposób Entity Framework 4.0 obsługuje klucze?

Odpowiedz

13

Nie, EF4 obsługuje klucze kompozytowe.

Problemem jest tabela z kluczem zastępczym i kluczami złożonymi. Możesz ustawić tylko jeden klucz w każdym modelu; ten klucz może mieć wiele pól, ale możesz mieć tylko jeden z punktu widzenia projektanta. Nie jestem pewien co do ręcznego edytowania odwzorowania XML lub kodu.

Możesz ustawić pole jako Tożsamość, a nie klucz, jeśli potrzebujesz złożonego i zastępczego klucza na tym samym stole. Pole Identity (Id) nie będzie używane przez obiekty ObjectContext lub ObjectStateTracker, ale będzie się zwiększać i będzie można je wywoływać tylko w porządku.

8

Miałem problemy z kluczami EF4 i złożonymi. Nie obsługuje kolumn używanych jako komponenty w więcej niż jednym kluczu w tabeli łączenia.

Aby uzyskać więcej informacji, zobacz moje poprzednie pytanie Mapping composite foreign keys in a many-many relationship in Entity Framework. Nakrętki jest to, że gdy masz tabelę join (opisujące wielu-wielu relacji), gdzie oba związki używać wspólnego klucza, dostaniesz błąd jak

Error 3021: Problem z mapowaniem fragmenty ...: Każdy z poniższych kolumn w tabeli odsłonę są odwzorowywane na wielu koncepcyjnych właściwości bocznych: PageView.Version jest odwzorowywany (PageView_Association.View.Version, PageView_Association.Page.Version)

Jedynym sposobem było skopiowanie kolumna, która pokonuje cel posiadania go w ogóle.

Powodzenia!

+6

Śmiesznie denerwujące. –

Powiązane problemy