Учитывая следующее ПОСТЕПЕННО классы:
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; }
}
При создании модели базы данных с помощью кода EF4 CTP4 первый подход действительно создает желаемую объединяющую таблицу:
CREATE TABLE [dbo].[Certifications_CertifiedEmployees](
[Certifications_Id] [int] NOT NULL,
[CertifiedEmployees_Id] [int] NOT NULL,
...
Однако имя таблицы и имена столбцов не идеальны, потому что они сгенерированы со связанных имен свойства класса. Я имел бы:
CREATE TABLE [dbo].[Employees_Certifications](
[Employee_Id] [int] NOT NULL,
[Certification_Id] [int] NOT NULL,
...
Кто-либо знает, возможно ли изменить сгенерированные имена столбцов в этом сценарии и дополнительно также изменить имя таблицы так, чтобы Сотрудники были перед Сертификациями?
Спасибо, Gary
Я использовал свободный API для изменения сгенерированной таблицы соединений:
modelBuilder.Entity<Employee>()
.HasMany(e => e.Certifications)
.WithMany(c => c.Employees)
.Map("Employees_Certifications", (e, c) => new {
Employee_Id = e.Id,
Certification_Id = c.Id });