我们想使用实体框架代码优先使用一对一的可选关系。我们有两个实体。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创建一对一的可选关系?
3 回答
SMILET
TA贡献1796条经验 获得超4个赞
就像您之间存在一对多关系一样LoyaltyUserDetail,PIIUser因此映射应该
modelBuilder.Entity<LoyaltyUserDetail>()
.HasRequired(m => m.PIIUser )
.WithMany()
.HasForeignKey(c => c.LoyaltyUserDetailId);
EF应该创建您需要的所有外键,而不必关心WithMany!
- 3 回答
- 0 关注
- 529 浏览
添加回答
举报
0/150
提交
取消