Chcemy użyć relacji jeden do jednej opcjonalnej przy użyciu Entity Framework Code First. Mamy dwie istoty.
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
może mieć, LoyaltyUserDetail
ale LoyaltyUserDetail
musi mieć PIIUser
. Wypróbowaliśmy te techniki płynnego podejścia.
modelBuilder.Entity<PIIUser>()
.HasOptional(t => t.LoyaltyUserDetail)
.WithOptionalPrincipal(t => t.PIIUser)
.WillCascadeOnDelete(true);
To podejście nie spowodowało utworzenia LoyaltyUserDetailId
klucza obcego w PIIUsers
tabeli.
Następnie wypróbowaliśmy następujący kod.
modelBuilder.Entity<LoyaltyUserDetail>()
.HasRequired(t => t.PIIUser)
.WithRequiredDependent(t => t.LoyaltyUserDetail);
Ale tym razem EF nie utworzył żadnych kluczy obcych w tych 2 tabelach.
Czy masz jakieś pomysły na ten numer? Jak możemy utworzyć relację jeden do jednego, używając Fluent API platformy encji?