Queremos usar una relación opcional uno a uno usando Entity Framework Code First. Tenemos dos entidades.
public class PIIUser
{
public int Id { get; set; }
public int? LoyaltyUserDetailId { get; set; }
public LoyaltyUserDetail LoyaltyUserDetail { get; set; }
}
public class LoyaltyUserDetail
{
public int Id { get; set; }
public double? AvailablePoints { get; set; }
public int PIIUserId { get; set; }
public PIIUser PIIUser { get; set; }
}
PIIUser
puede tener un LoyaltyUserDetail
pero LoyaltyUserDetail
debe tener un PIIUser
. Probamos estas técnicas de enfoque fluido.
modelBuilder.Entity<PIIUser>()
.HasOptional(t => t.LoyaltyUserDetail)
.WithOptionalPrincipal(t => t.PIIUser)
.WillCascadeOnDelete(true);
Este enfoque no creó LoyaltyUserDetailId
una clave externa en la PIIUsers
tabla.
Después de eso, probamos el siguiente código.
modelBuilder.Entity<LoyaltyUserDetail>()
.HasRequired(t => t.PIIUser)
.WithRequiredDependent(t => t.LoyaltyUserDetail);
Pero esta vez EF no creó ninguna clave externa en estas 2 tablas.
¿Tiene alguna idea para este tema? ¿Cómo podemos crear una relación opcional uno a uno utilizando la api fluida del marco de entidad?