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.
 

