使用Entity Framework Fluent API一对一的可选关系

我们想使用实体框架代码优先使用一对一的可选关系。我们有两个实体。


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创建一对一的可选关系?


ITMISS
浏览 504回答 3
3回答

SMILET

就像您之间存在一对多关系一样LoyaltyUserDetail,PIIUser因此映射应该modelBuilder.Entity<LoyaltyUserDetail>()&nbsp; &nbsp; &nbsp; &nbsp;.HasRequired(m => m.PIIUser )&nbsp; &nbsp; &nbsp; &nbsp;.WithMany()&nbsp; &nbsp; &nbsp; &nbsp;.HasForeignKey(c => c.LoyaltyUserDetailId);EF应该创建您需要的所有外键,而不必关心WithMany!
打开App,查看更多内容
随时随地看视频慕课网APP