我们想使用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没有在这两个表中创建任何外键。
您对此问题有任何想法吗?我们如何使用实体框架流利的API创建一对一的可选关系?