Właściwość nawigacji pozwala na nawigację (duh!) Z jednego obiektu do "połączonego" obiektu.
E.g. jeśli użytkownik jest podłączony do roli, można użyć nawigacji "Rola", aby odczytać i sprawdzić rolę powiązaną z użytkownikiem.
EDIT:
Jeśli chcesz załadować użytkownikowi LINQ-podmioty, a także spojrzeć na jego własności „Rola” nawigacji, trzeba jawnie zawierać „rolę” podmiot w zapytaniu LINQ - EF robi NOT załaduj automatycznie te właściwości nawigacji.
// load user no. 4 from database
User myUser = from u in Users.Include("Role")
where u.ID = 4
select u;
// look at the role the user has
string roleName = myUser.Role.Name;
OR:
// load user no. 4 from database
User myUser = from u in Users
where u.ID = 4
select u;
// check to see if RoleReference is loaded, and if not, load it
if(!myUser.RoleReference.IsLoaded)
{
myUser.RoleReference.Load();
// now, the myUser.Role navigation property should be loaded and available
}
// look at the role the user has
string roleName = myUser.Role.Name;
Jest to w zasadzie programowym odpowiednikiem relacji klucza obcego w bazie danych - połączenie między dwoma obiektami. Zasadniczo "ukrywa" lub rozwiązuje sprzężenie między dwiema tabelami (lub dwoma elementami, w języku EF).
Marc
Ah Mam problemy z dodając kilka pól. Jak mam tabelę (pozwala wywołać TABLEA) Tabela A ma 2 pola (pole 1 i pole 2). Mój aspnet_userTable ma wszystkie standardowe pola członkowskie asp.net oraz Pola 1 i Pole 2. kiedy idę i próbuję dodać nowego użytkownika do aspnet_userTable Nie widzę Field1 ani Field2. Tak więc spróbowałem zrobić to w dwóch krokach najpierw do aspnet_Users.Createaspnet_Users(), a następnie zapisz to w tabeli aspnet_Users (pozwala wywołać to użytkownik). Potem próbowałem user.Field1 = "coś" to działa. następnie wypróbowałem user.Field2 (nie znaleziono żadnej właściwości). Widzę, że ma to jednak –
chobo2
user.TableA.Field1 i user.TableA.Field2, ale kiedy próbuję ustawić to po prostu dostaję jakiś zerowy błąd odniesienia. Co robię źle? – chobo2
Cóż, masz błędne skojarzenia - jeśli dodasz do systemu nową tabelę "TableA" i utworzysz relację klucza obcego z "aspnet_user", to twój obiekt "TableA" będzie miał relację (właściwość navigation) do "aspnet_User " - nie na odwrót. Tak więc w jednostce "TableA" powinna istnieć właściwość nawigacji "aspnet_User". –