2013-01-17 116 views
3

我一直在閱讀關於EF代碼的SO帖子首先生成重複的外鍵,並試圖將解決方案應用於我的代碼,但無法修復我的代碼。EF代碼同一表第一個重複的外鍵

這裏是我的班

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"); 
    } 
} 

這在appointments表生成兩個外鍵即SCHEDULEIDSchedule_Id1

我怎麼能告訴EF不創建Schedule_Id1

+0

現在FK是Schedule_Id我想成爲SCHEDULEID – ZedBee

回答

6

就試試這個:

HasRequired(a => a.Schedule).WithMany(x=> x.Appointment).Map(x => x.MapKey("SCHEDULEID")); 

希望這有助於。

+0

我說這只是命名外鍵SCHEDULEID代替Schedule_Id這是按照慣例 – ZedBee

+0

創建我更新了 – saber

+0

tnx :)這個問題修復了這個問題..不知道我認爲WithMany()應該是空的,如果在配置類中使用的話。我們應該更好地嘗試,而不是假設.. – ZedBee

1

您可以使用InverseProperty數據註解物業約會

public class Schedule 
{ 
    public int Id { get; set; } 
    [InverseProperty("Schedule")] 
    public virtual ICollection<Appointment> Appointments { get; set; } 
} 

public class Appointment 
{ 
    public int Id { get; set; } 
    public Schedule Schedule { get; set; } 
} 
+0

同樣的問題。 Schedule_Id被創建而不是SCHEDULEID – ZedBee