为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
ITMISS 2019-11-12 14:50:53
我们想使用实体框架代码优先使用一对一的可选关系。我们有两个实体。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!


查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 501 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信