Wozu dienen Navigationseigenschaften in Entity Framework?

.net entity-framework

Frage

Ich sehe in meinem EF-Diagramm eine Menge dieser Navigationseigenschaften, weiß aber nicht, wofür sie wirklich sind. Wie ich in vielen Tabellen sehe, habe ich aspnet_Users-Eigenschaften.

Wofür sind diese? Helfen sie bei Joins? oder was?

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.

Akzeptierte Antwort

Mit einer Navigationseigenschaft können Sie von einer Entität zu einer "verbundenen" Entität navigieren.

Wenn Ihr Benutzer beispielsweise mit einer Rolle verbunden ist, können Sie die Navigation "Rolle" verwenden, um die dem Benutzer zugeordnete Rolle zu lesen und zu überprüfen.

BEARBEITEN:

Wenn Sie den Benutzer mit LINQ-to-Entities laden möchten und auch die Navigationseigenschaft "Role" anzeigen möchten, müssen Sie die Entität "Role" explizit in Ihre LINQ-Abfrage einschließen. EF lädt diese Navigationseigenschaften NICHT automatisch für Sie .

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

ODER:

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

Es ist im Grunde ein programmatisches Äquivalent zu einer Fremdschlüsselbeziehung in einer Datenbank - einer Verbindung zwischen zwei Objekten. Im Grunde "versteckt" oder löst es einen Join zwischen zwei Tabellen (oder zwei Entitäten, in EF sprechen).

Marc



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum