Утверждение - что-то, что Вы добавляете к своей программе, которая заставляет программу сразу остановиться, если условие соблюдают, и отобразите сообщение об ошибке. Вы обычно используете их для вещей, которым Вы верите, никогда не может происходить в Вашем коде.
Свойство навигации позволяет вам переходить от одной сущности к «подключенной» сущности.
Например, если ваш пользователь подключен к роли, вы можете использовать навигацию «Роль» для чтения и проверьте роль, связанную с пользователем.
РЕДАКТИРОВАТЬ:
Если вы хотите загрузить пользователя с помощью LINQ-to-Entities, а также посмотреть на его свойство навигации «Роль», вы должны явно включить «Роль» "в вашем запросе 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).
Marc