我们希望使用 Entity Framework Code First 来使用一对一的可选关系。我们有两个实体。
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
可能有,LoyaltyUserDetail
但LoyaltyUserDetail
必须有PIIUser
。我们尝试了这些流畅的方法技术。
modelBuilder.Entity<PIIUser>()
.HasOptional(t => t.LoyaltyUserDetail)
.WithOptionalPrincipal(t => t.PIIUser)
.WillCascadeOnDelete(true);
这种方法没有在表中创建LoyaltyUserDetailId
外键。PIIUsers
之后我们尝试了以下代码。
modelBuilder.Entity<LoyaltyUserDetail>()
.HasRequired(t => t.PIIUser)
.WithRequiredDependent(t => t.LoyaltyUserDetail);
但是这次 EF 没有在这两个表中创建任何外键。
你对这个问题有什么想法吗?我们如何使用实体框架fluent api创建一对一的可选关系?