2009-08-11 31 views
25

Veo en mi diagrama EF muchas de estas propiedades de navegación, pero no estoy seguro de qué son realmente. Como veo en muchas de mis tablas, tengo propiedades aspnet_Users.¿Para qué sirven las propiedades de navegación en Entity Framework?

¿Para qué sirven? ¿Ayudan para las uniones? ¿o que?

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. 

Respuesta

44

Una propiedad de navegación le permite navegar (duh!) De una entidad a una entidad "conectada".

E.g. si su usuario está conectado a una función, puede utilizar la navegación "Función" para leer e inspeccionar la función asociada con el usuario.

EDIT:

Si desea cargar al usuario con LINQ a Entidades, y también buscar en su propiedad de navegación "papel", que ha de incluir explícitamente la entidad "papel" en su consulta LINQ - EF hace NOT carga esas propiedades de navegación automáticamente para usted.

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

O:

// 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 básicamente un programática equivalente a una relación de clave externa en una base de datos - una conexión entre dos objetos. Básicamente "oculta" o resuelve una unión entre dos tablas (o dos entidades, en EF speak).

Marc

+0

Ah Tengo problemas con la adición de algunos campos. Como tengo una tabla (le llaman tablaA) tabla A tiene 2 campos (campo 1 y campo 2). Mi aspnet_userTable tiene todos los campos de membresía asp.net más el Campo 1 y el Campo 2. cuando voy y trato de agregar un nuevo usuario a aspnet_userTable No veo Field1 o Field2. Así que traté de hacerlo en 2 pasos primero haga aspnet_Users.Createaspnet_Users() y luego almacénelo en una tabla aspnet_Users (vamos a llamarlo usuario). Luego probé user.Field1 = "something" esto funciona. luego probé user.Field2 (no se encuentra ninguna propiedad). Veo que tiene este – chobo2

+1

user.TableA.Field1 y user.TableA.Field2, pero cuando trato de configurarlo obtengo un error de referencia nulo. ¿Qué estoy haciendo mal? – chobo2

+0

Bueno, tiene sus asociaciones incorrectas: si agrega una nueva tabla "TableA" a su sistema y crea una relación de clave externa con "aspnet_user", su objeto "TableA" tendrá una relación (propiedad de navegación) con "aspnet_User" " - no de la otra manera. Entonces, en su entidad "TableA", debe haber una propiedad de navegación "aspnet_User". –

Cuestiones relacionadas