What are the Navigation Properties in Entity Framework

What are the Navigation Properties in Entity Framework

 

回答1

Navigation properties represents related entites to the principal entity. Foreign Keys are usually represented by navigation properties.

Ex : if you have two tables Invoice and invoice items and those tables have a relation 1-> many so you'll find a navigation property in invoice entity that lists all invoice items related to an invoice.
Hope it helps.

 

回答2

Navigation properties in the Entity Framework provide a way to navigate an association between two entity types. Every object can have a navigation property for every relationship in which it participates. Navigation properties allow you to navigate and manage relationships in both directions, returning either an EntityReference, if the multiplicity is either one or zero-or-one, or an EntityCollection, if the multiplicity is many.

When you use the Entity Framework-generated classes, navigation properties are created for objects that participate in a relationship.

UPDATE: Here is nice navigation properties example for relations between books, authors and publishers.

 

回答3

Navigation Property is mainly used for Foreign key relationship in EF. i.e. User to Roles, product to categories etc.

so if you have Order with OrderLines, navigation property will say Order_OrderLineItems and you can access complete line items associated with it.

have a look some of the explanation here, What are Navigation Properties in Entity Framework for?

 

What are Navigation Properties in Entity Framework for?

问题

I see in my EF diagram alot of these navigation properties but not sure what they are really for. Like I see in lots of my tables I have aspnet_Users properties.

What are these for? Do they help for joins? or what?

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.

 

 回答

A navigation property allows you to navigate from one entity to a "connected" entity.

E.g. if your user is connected to a role, you can use the "Role" navigation to read and inspect the role associated with the user.

EDIT:

If you want to load the user with LINQ-to-Entities, and also look at its "Role" navigation property, you have to explicitly include the "Role" entity in your LINQ query - EF does NOT load those navigation properties automatically for you.

  // 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;

It's basically a programmatic equivalent to a foreign key relationship in a database - a connection between two objects. It basically "hides" or resolves a join between two tables (or two entities, in EF speak).

Marc

 

 

 

 

 

 

作者:Chuck Lu    GitHub    
posted @   ChuckLu  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-09-08 OpenSSL errno 10054
2021-09-08 Why aren't telnet bots finishing the three-way handshake?
2021-09-08 Telnet shows blank screen on port 443 but TCP handshake not done 【openssl s_client -connect】
2021-09-08 You have a private key that corresponds to this certificate but CryptAcquireCertificatePrivateKey failed.
2021-09-08 劳动合同的必备条款有哪些?
2021-09-08 openssl pkcs12
2021-09-08 How to generate a self-signed SSL certificate using OpenSSL?
点击右上角即可分享
微信分享提示