Próbuję usprawiedliwić przy użyciu EntityFramework i upadając na pierwszym przeszkodę.Mam za pomocą bazy danych pierwsze podejście. Oto, jak to wygląda w SQL Server 2008 R2:
Jak widać, BARDZO prosta domena. Związek jest relacją jeden do wielu między User.Id i Blog.UserId.
Jednak nawet w przypadku tej niewiarygodnie prostej domeny EF nie działa. Kiedy importuję tabele, otrzymuję to:
Jak widać, nie ma związku. Relacja już nie istnieje i nieważne, ile razy usuwam, regeneruję, nie pojawi się. "Sprawdzanie kolumn klucza obcego w modelu" jest zaznaczone.
Jeśli jednak utworzę tabele oparte na kluczach opartych na intach zamiast na identyfikatorach GUID, zostaną utworzone relacje.
Czy to błąd, ograniczenie czy moja własna głupota?
Nie wzbudzają one mojej pewności siebie, jak na Ziemi będzie ona działać w prawdziwym scenariuszu, z setkami tabel i tysiącem skojarzeń?
- VS 2012
- SQL Server 2008 R2
- EF 5
Odpowiedzi:
6 dla odpowiedzi № 1Rozwiązałem problem. Problem został spowodowany przez nieuczciwy indeks, którego nie znałem na stole.
Jeśli istnieje indeks UNIQUE w tym samym polu, co klucz podstawowy, spowoduje to, że EF nie wygeneruje w ogóle relacji PK-FK.
Po prostu usunięcie niepotrzebnego unikalnego indeksu (pierwotnie wymusza unikatowość), projektant EF natychmiast podniósł relację.