Подтвердить что ты не робот

Что такое свойства навигации в Entity Framework?

Я вижу в своей EF-диаграмме много этих свойств навигации, но не уверен, для чего они предназначены. Как и во многих моих таблицах, у меня есть свойства aspnet_Users.

Для чего они нужны? Помогают ли они для присоединения? или что?

Error 2
Error 3007: Problem in Mapping Fragments starting at lines 1201, 1423: 
Non-Primary-Key column(s) [Field2] are being mapped in both fragments 
to different conceptual side properties - data inconsistency is possible 
because the corresponding conceptual side properties can be independently 
modified.
4b9b3361

Ответ 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, двух сущностей).

Марк