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.