Estoy tratando de crear una primera aplicación de código de entidad simple. Tengo estas clases:¿Cómo obtener el código de Entity Framework? ¿Funcionan las primeras y las propiedades de claves foráneas que aceptan nulos?
public class User
{
public int UserId { get; set; }
public string Username { get; set; }
public virtual ActivationTicket ActivationTicket { get; set; }
}
public class ActivationTicket
{
public int ActivationTicketId { get; set; }
public virtual User User { get; set; }
public string Ticket { get; set; }
}
Cuando intento crear un nuevo usuario y guardarla en la base de datos (un usuario sin una ActivationTicket que es) recibo una excepción
La sentencia INSERT en conflicto con la restricción FOREIGN KEY "ActivationTicket_User". El conflicto ocurrió en la base de datos "Test", tabla "dbo.ActivatioTickets", columna "ActivationTicketId". La instrucción se ha terminado.
Asumo EF trata el mapeo entre el Usuario y ActivationTicket como 1-1, pero debería ser 1-0..1
¿Qué tengo que hacer para conseguir que esto funcione?
Estoy empezando con EF, así que no estoy muy seguro de dónde poner esta regla de mapeo. ¿Hay un lugar recomendado donde almacenar todas esas asignaciones? – b3n
Tiene dos opciones. 1) Póngalo directamente en un método de su clase que derive de DbContext: anulación protegida void OnModelCreating (ModelBuilder modelBuilder) - O - 2) Defina las asignaciones en clases separadas usando modelBuilder.Configurations.Add (new ...) – anon
Recomiendo definir mapeos en clases separadas (defina YourModelClass_MappingClass que deriva de EntityTypeConfiguration, y defina el mapeo en el ctor de esta clase, luego debe inicializarlo en el evento DbContext OnModelCreating como @anon escribió en su comentario. usar clases separadas porque sería un verdadero desastre definir el mapeo de todas tus clases en el mismo lugar –
Prokurors