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

Fluent Api: No se inserta un ID en una entidad que tiene relación.

Estas en el tema de Fluent Api: No se inserta un ID en una entidad que tiene relación. en el foro de .NET en Foros del Web. Hola foreros !!! Tengo un pequeño problema con Fluent Api con Code First, y espero puedan ayudarme a resolverlo, por que no entiendo que estoy ...
  #1 (permalink)  
Antiguo 18/12/2014, 06:59
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Fluent Api: No se inserta un ID en una entidad que tiene relación.

Hola foreros !!!

Tengo un pequeño problema con Fluent Api con Code First, y espero puedan ayudarme a resolverlo, por que no entiendo que estoy haciendo mal.

Estoy creando el diseño para tres tablas: UsersBase, Customers, Managers

Tanto Customers, como Managers deben llevar el Id de un UserBase ya creado.

Para ello creo estas entidades:

Código:
    /// <summary>
    /// Clase que representa los datos básicos de un usuario.
    /// </summary>
    [DataContract]
    public class UserBase : EntityBase
    {

        public UserBase() : base() { }

        /// <summary>
        /// Login
        /// </summary>
        [DataMember]
        public string Login { get; set; }

        /// <summary>
        /// Clave
        /// </summary>
        [DataMember]
        public string Password { get; set; }

        /// <summary>
        /// Correo electrónico del usuario.
        /// </summary>
        [DataMember]
        public string Email { get; set; }

        public virtual ICollection<Customer> CustomerList { get; set; }

        public virtual ICollection<Manager> ManagerList { get; set; }
    }



    /// <summary>
    /// Clase que representa la información de un cliente.
    /// </summary>
    [DataContract]
    public class Customer : EntityBase
    {

        public Customer() : base() { }

                
        /// <summary>
        /// Nombre
        /// </summary>
        [DataMember]
        public string Name { get; set; }

        /// <summary>
        /// Apellidos
        /// </summary>
        [DataMember]
        public string LastName { get; set; }

        /// <summary>
        /// Fecha de nacimiento
        /// </summary>
        [DataMember]
        public DateTime? BirthDate { get; set; }

        /// <summary>
        /// Propiedad que contiene los datos del usuario relacionado con Login.
        /// </summary>
        [DataMember]
        public virtual UserBase UserBase { get; set; }

        /// <summary>
        /// Lista de direcciones que tiene el Usuario
        /// </summary>
        [DataMember]
        public virtual ICollection<Address> AddressList { get; set; }

        /// <summary>
        /// Lista de pedido.
        /// </summary>
        [DataMember]
        public virtual ICollection<Order> OrderList { get; set; }
    }



    /// <summary>
    /// Clase que representa la información de un usuario de la aplicacion.
    /// </summary>
    [DataContract]
    public class Manager : EntityBase
    {

        public Manager() : base()
        {

            RoleList = new List<Library.Domain.Entities.Role>();
        }


        /// <summary>
        /// Nombre
        /// </summary>
        [DataMember]
        public string Name { get; set; }


        /// <summary>
        /// Propiedad que contiene los datos del usuario relacionado con Login.
        /// </summary>
        [DataMember]
        public virtual UserBase UserBase { get; set; }


        /// <summary>
        /// Lista de Roles que contiene el manager
        /// </summary>
        [DataMember]
        public virtual ICollection<Role> RoleList { get; set; }
    }

Bien... el caso es que se crean las tablas, y parece que todo está correcto. Pero.. en las tablas Managers y Customers se me está creando el UserBase_Id (FK, uniqueidentifier, null)

Por que sale eso ?? No debería ser NOT NULL ???

Y claro... cuando creo los registros, ese campo aparece como null en la base de datos, en vez de salir el ID del UserBase creado y relacionado.

Código:
                //*****************************
                //USUARIO BASE
                //*****************************
                Library.Domain.Entities.UserBase objUser = new Library.Domain.Entities.UserBase { Email = "sdafsf", Login = "log", Password = "pass" };
                context.UsersBase.Add(objUser);


                //*****************************
                //USUARIO CUSTOMER
                //*****************************
                Library.Domain.Entities.Customer objCustomer = new Library.Domain.Entities.Customer
                {
                    Name = "customer",
                    LastName = "lastname customer",
                    BirthDate = DateTime.Today,
                    UserBase = objUser
                };
                context.Customers.Add(objCustomer);

                //*****************************
                //Manager
                //*****************************
                Library.Domain.Entities.Manager objManager = new Library.Domain.Entities.Manager
                {
                    Name = "carlos",
                    CreationDate = DateTime.Today,
                    LastModificationDate = DateTime.Today,
                    UserBase = objUser
                };
                objManager.RoleList.Add(objRole);
                context.Managers.Add(objManager);

En fin... espero podáis ayudarme, por favor.
__________________
Charlie.

Última edición por chcma; 18/12/2014 a las 07:55

Etiquetas: api, entidad, inserta
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 03:35.