Given the following POCO classes:
public class Certification {
public int Id { get; set; }
public virtual ICollection<Employee> CertifiedEmployees { get; set; }
}
public class Employee {
public int Id { get; set; }
public virtual ICollection<Certification> Certifications { get; set; }
}
Creating the database model using the EF4 CTP4 code first approach does create the desired junction table:
CREATE TABLE [dbo].[Certifications_CertifiedEmployees](
[Certifications_Id] [int] NOT NULL,
[CertifiedEmployees_Id] [int] NOT NULL,
...
However, the table name and the column names are not ideal because they are generated from the associated class property names. I would rather have:
CREATE TABLE [dbo].[Employees_Certifications](
[Employee_Id] [int] NOT NULL,
[Certification_Id] [int] NOT NULL,
...
Does anyone know if it is possible to change the generated column names in this scenario, and optionally to also change the table name so that Employees is before Certifications?
Thanks, Gary
Anyone stumbling over this now and using a newer version of EF might need to change the last section @gxclarke answer to:
.Map(
m => {
m.MapLeftKey("Employee_Id");
m.MapRightKey("Certification_Id");
m.ToTable("Employees_Certifications");
}
);
As it looks as though the method parameters have changed to only accept the action and not the table name.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With