我一直在阅读有关EF Code First生成重复外键的SO帖子,并尝试将解决方案应用于我的代码但无法修复我的代码.
这是我的课程
public class Schedule { public int Id { get; set; } public ICollection<Appointment> Appointments { get; set; } } public class Appointment { public int Id { get; set; } public Schedule Schedule { get; set; } } public class ScheduleConfiguration : EntityTypeConfiguration<Schedule> { public ScheduleConfiguration() { HasKey(s => s.Id); Property(s => s.Id).HasColumnName("SCHEDULEID"); ToTable("SCHEDULES"); } } public class AppointmentConfiguration : EntityTypeConfiguration<Appointment> { public AppointmentConfiguration() { HasKey(a => a.Id); Property(a => a.Id).HasColumnName("APPOINTMENTID"); Hasrequired(a => a.Schedule).WithMany().Map(x => x.MapKey("SCHEDULEID")); ToTable("APPOINTMENTS"); } }
这在约会表中生成两个外键,即SCHEDULEID和Schedule_Id1.
如何告诉EF不要创建Schedule_Id1
解决方法
试试这个:
Hasrequired(a => a.Schedule).WithMany(x=> x.Appointment).Map(x => x.MapKey("SCHEDULEID"));
希望这有帮助.