Foros del Web » Programación para mayores de 30 ;) » .NET »

Entity Framework Code First - Propiedad de Navegación no funciona.

Estas en el tema de Entity Framework Code First - Propiedad de Navegación no funciona. en el foro de .NET en Foros del Web. Hola Foreros, A ver si pueden ayudarme con esta pequeña duda creando mi modelo Code First... Quiero crear tres tablas. LoginWines, UsersWines y UserWines_LoginInfos. Un ...
  #1 (permalink)  
Antiguo 12/05/2015, 03:45
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Entity Framework Code First - Propiedad de Navegación no funciona.

Hola Foreros,

A ver si pueden ayudarme con esta pequeña duda creando mi modelo Code First...

Quiero crear tres tablas. LoginWines, UsersWines y UserWines_LoginInfos.

Un mismo usuario puede estar relacionado con diferentes logins.

También quiero crear propiedades de navegacion en mis clases.

Creo que lo hago todo bien, pero... al recuperar un Login, en la propiedad User no me aparece los datos del usuario relacionado. ¿Qué hago mal?


Definición de las clases
Código:
    public class LoginWine
    {

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id { get; set; }

        public string UserName { get; set; }

        public string Password { get; set; }

        //Puse este attribute porque sino me creaba un campo UserWine_Id en la tabla, cuando no debería existir eso.
        [NotMapped]
        public virtual UserWine User { get; set; }
    }

    public class UserWine
    {

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id { get; set; }

        public string Name { get; set; }

        public string LastName { get; set; }

        public virtual System.Collections.Generic.ICollection<LoginWine> LoginInfo { get; set; }
    }

Mi Clase Context
Código:
        public DbSet<CountryBase> CountriesBases { get; set; }
        public DbSet<Country> Countries { get; set; }
        public DbSet<LoginWine> LoginsWines { get; set; }
        public DbSet<UserWine> UsersWines { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

            modelBuilder.Entity<UserWine>()
                .HasMany(m => m.LoginInfo)
                .WithMany()
                .Map(m =>
                {
                    m.MapLeftKey("UserWine_Id");
                    m.MapRightKey("LoginInfo_Id");
                    m.ToTable("UserWines_LoginInfos");
                });

            modelBuilder.Entity<Country>().HasRequired(m => m.CountryBase).WithRequiredDependent().Map(m=>m.MapKey("CountryBase_Id"));

            base.OnModelCreating(modelBuilder);
        }


        public WineDbContext() : base() { }
        public WineDbContext(string connectionString) : base(connectionString) { }
    }
Bien, ahora al recuperar un login, debería aparecerme su propiedad User con los datos del usuario relacionado.

Código:
            using (WineDbContext context = new WineDbContext())
            {

                var login = context.LoginsWines.FirstOrDefault();

		login.User ES NULL ¿POR QUÉ?
            }
Por favor... si alguien me puede ayudar, se lo agradeceré.
__________________
Charlie.

Etiquetas: campo, code, entity, framework, propiedad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:33.