Opcjonalna relacja jeden do jednego przy użyciu Entity Framework Fluent API
Chcemy użyć opcjonalnej relacji jeden do jednego przy użyciu kodu Entity Framework Code First. Mamy dwa podmioty.
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
aleLoyaltyUserDetail
musi miećPIIUser
. Próbowaliśmy tych technik płynnego podejścia.
modelBuilder.Entity<PIIUser>()
.HasOptional(t => t.LoyaltyUserDetail)
.WithOptionalPrincipal(t => t.PIIUser)
.WillCascadeOnDelete(true);
Takie podejście nie powstałoLoyaltyUserDetailId
klucz zagraniczny wPIIUsers
stół.
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 problem? W jaki sposób możemy utworzyć jeden do jednego opcjonalnego związku, używając struktury encji płynnie api?