首页 文章

如何使用Entity Framework将外键设置为主键?

提问于
浏览
2

我正在尝试使用Entity Framework和流畅的api将外键设置为主键 .

modelBuilder.Entity<Z>()
            .HasRequired(m => m.X)
            .WithRequireDependent(m => m.Y)
            .WillCascadeOnDelete();

我的课:

public class Z
{
        [Key,ForeignKey("X")]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public RentCar X { get; set; }
        public DateTime AIA_KM { get; set; }
        public DateTime AIA_FEC { get; set; }
}

之前我检查了这个StackoverFlow问题Entity Framework Foreign Key as Primary Key Code First但对我不起作用 .

谢谢 .

1 回答

  • 2

    Z 实体中添加 RentCar 的PK并添加以下配置:

    public class Z
    {
            public int RentCarId { get; set; }//Add this
    
            public RentCar X { get; set; }
            public DateTime AIA_KM { get; set; }
            public DateTime AIA_FEC { get; set; }
    }
    

    并添加此配置:

    modelBuilder.Entity<Z>().HasKey(t => t.RentCarId );// Add this
    modelBuilder.Entity<Z>()
                .HasRequired(m => m.X)
                .WithRequireDependent(m => m.Y)
                .WillCascadeOnDelete();
    

    从这link

    选择WithRequiredPrincipal将使您正在配置主体的实体,这意味着它包含关系的主键 . 选择WithRequiredDependent将使您正在配置依赖项的实体,这意味着它将具有该关系的外键 .

    所以按照惯例,你依赖实体的PK( Z )将成为一对一关系的FK

相关问题