實體框架中的導航屬性是什麼?

.net 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.

一般承認的答案

導航屬性允許您從一個實體導航(duh!)到“連接”實體。

例如,如果您的用戶已連接到角色,則可以使用“角色”導航來閱讀和檢查與用戶關聯的角色。

編輯:

如果要加載使用LINQ到實體的用戶,同時也看看它的“角色”導航屬性,你必須明確地包含在你的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說)之間的連接。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因