Ответ 1
Свойство навигации позволяет переходить от одного объекта к "связанному" объекту.
Например, если ваш пользователь подключен к роли, вы можете использовать навигацию "Роль", чтобы прочитать и проверить роль, связанную с пользователем.
РЕДАКТИРОВАТЬ:
Если вы хотите загрузить пользователя с LINQ-to-Entities, а также посмотреть его свойство навигации "Role", вам необходимо явно включить объект "Role" в запрос LINQ - EF НЕ загружает эти свойства навигации автоматически для вас,
// 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;
ИЛИ ЖЕ:
// 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;
Это в основном программный эквивалент отношения внешнего ключа в базе данных - связь между двумя объектами. Он в основном "скрывает" или разрешает объединение двух таблиц (или, как говорят в EF, двух сущностей).
Марк