99

Wygenerowałem Entity Framework Model (4.0) z mojej bazy danych. Nie zaprojektowałem bazy danych i nie mam żadnej kontroli nad schematem, ale istnieje kilka tabel, które nie mają zdefiniowanych ograniczeń klucza obcego, ale zdefiniowano niejawną relację.Entity Framework - Dodaj własność nawigacji ręcznie

Na przykład:

Mam tabelę o nazwie People, który ma następujące kolumny: GenderID RaceID

są stoły dla obu płci i rasy, ale nie ma klucza obcego w tabeli People.

Po zaimportowaniu modelu nie dodano właściwości nawigacji dla tych relacji. Próbowałem dodać go ręcznie, ale od ról i do roli są wyłączone. Nie jestem pewien, jak sam dodać związek. Jak mam to zrobic?

Odpowiedz

164

Yup - to nie jest takie proste.

Oto co trzeba zrobić:

1 - Kliknij prawym przyciskiem myszy na projektanta, Dodaj ->Stowarzyszenie

2 - Konfiguracja stowarzyszenie i cardinalities (People * .. 1 Płeć, ludzie * ..1 Race)

3 - Przejdź do modelu Browser ->Stowarzyszeń

4 - Kliknij prawym przyciskiem myszy na swoim nowo powstałych stowarzyszeń, kliknij Właściwości

5 - Tutaj musisz konfiguracji punktów końcowych dla kluczowych i kaskadowych opcji. Upewnij się, że punkty końcowe są poprawne. W tym miejscu można również ustawić ograniczenie referencyjne dla niejawnej właściwości nawigacyjnej.

6 - Zamapuj właściwość nawigacyjną na odpowiednie tabele/pola.

7 - Zatwierdź swój model, skrzyżuj palce.

Mam nadzieję, że to pomoże.

+18

+1 za zapisanie tego, co zostało z moich włosów. Dodam # 6 wymaga zmiany kolumny klucza obcego na stronie właściwości powiązania, ustawienie więzów referencyjnych. Naciśnij przycisk [...], aby otworzyć okno dialogowe więzów referencyjnych i zmienić pole manekina, które projektant został podłączony do tabeli podrzędnej w obszarze Zależna właściwość. –

+7

Należy również przejść do właściwości tabeli podrzędnej i usunąć pole manekina dodane przez projektanta (i które nie jest mapowane do żadnych rzeczywistych pól w tabeli podrzędnej). –

+1

W przypadku widoku upewnij się, że uzyskałeś definicję klucza podstawowego (kliknij prawym przyciskiem myszy, wybierz powiązane pola, oznacz je jako element EntityKey we właściwościach). W przeciwnym razie możesz uzyskać "Wielość nie jest poprawna w relacji Rola Ponieważ rola zależna odnosi się do kluczowych właściwości ..." –

39

Natknąłem się na this blog post, które proponuje następujące rozwiązanie, które sprawdziło się znakomicie (niestety nie mogłem sprawić, żeby RPM1984 działało w mojej sytuacji).

  1. Dodaj stowarzyszenie poprzez projektant tle prawym przyciskiem myszy menu kontekstowe
  2. skonfigurować swoje Association (należy odznaczyć utworzenie klucza obcego)
  3. prawym przyciskiem myszy na połączeniu i wybierz Właściwości
  4. Kliknij na ... przycisk do ograniczenia referencyjnego
  5. Skonfiguruj relację między klawiszami ciągu
  6. Sprawdź (z menu kontekstowego projektanta)
  7. ???
  8. Zysk!
+3

Punkt +1 kazał mi zrobić to dobrze, przeoczyłem to z odpowiedzią RPM194. –

Powiązane problemy