Mam dwie tabele:Entity Framework 6 opcjonalnie jeden sposób relacja
Client
------------------------
Id (string) <-- PrimaryKey
Name (string)
Number (int)
Department:*
------------------------
Id (int) <-- Primary key
Name (string)
ClientNumber (int?)
Client (Client, virtual)
.....
Teraz chcę utworzyć opcjonalny relacji z Departmant do klienta (przy użyciu ClientNumber). Stworzyłem wirtualną właściwość w klasie Department (Client) i teraz muszę skonfigurować relację za pomocą EntityTypeConfiguration.
Istnieje brak kluczy obcych skonfigurowanych w bazie danych i nie jestem w stanie zmienić bazy danych. Nie mogę zmienić klienta Entity (klasy).
Muszę więc powiedzieć EntityFramework, że ClientNumber w klasie Department jest powiązany (opcjonalnie) z właściwością Number w klasie Client.
Ale nie mogę dowiedzieć się, jak powiedzieć, że EF Departamentu ClientNumber wiąże się z Klienta Ilość własności, a nie klucza podstawowego Klienta. (bez zmiany klasy podmiotu klienta)
edycja: Numer własność na kliencie jest unikalna dla każdego wpisu.
Relacja powinna skutkować sql jak ten:
SELECT .....
FROM Department D LEFT OUTER JOIN Client C ON (D.ClientNumber = C.Number)
Łatwo jest to zrobić za pomocą łączy w Linq, ale byłoby wspaniale, po prostu:
dbContext.Departments.Include(d => d.Client)
użyciu wirtualny właściwość w klasie departamentu zawierającej klienta (jeśli istnieje)
Nie można również tworzyć relacji w strukturze encji bez użycia kolumn klucza głównego. Jeśli chcesz zrealizować tę relację, musisz uwzględnić kolumnę Id klienta jako kolumnę klucza obcego. Jeśli to z jakiegoś powodu nie jest pożądane, możesz utworzyć widok, aby modelować tę relację. –