-
Notifications
You must be signed in to change notification settings - Fork 0
ManyToMany
Marcin Sulecki edited this page Apr 4, 2017
·
6 revisions
Model
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public ICollection<Project> Projects { get; set; }
}
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}
EF automatycznie utworzy tabelę pośredniczącą wraz kluczami obcymi:
To samo można otrzymać za pomocą konfiguracji:
modelBuilder.Entity<Project>()
.HasMany(e => e.Employees)
.WithMany(e => e.Projects);
Jeśli zamienimy miejscami pola otrzymamy inną nazwę tabeli
modelBuilder.Entity<Employee>()
.HasMany(e => e.Projects)
.WithMany(e => e.Employees);
Konfiguracja
modelBuilder.Entity<Employee>()
.HasMany(e => e.Projects)
.WithMany(e => e.Employees)
.Map(m=>
{
m.ToTable("EmployeesInProject");
});
modelBuilder.Entity<Employee>()
.HasMany(e => e.Projects)
.WithMany(e => e.Employees)
.Map(m=>
{
m.MapLeftKey("EmployeeId");
m.MapRightKey("ProjectId");
});
modelBuilder.Entity<Employee>()
.HasMany(e => e.Projects)
.WithMany(e => e.Employees)
.Map(m=>
{
m.ToTable("EmployeesInProject");
m.MapLeftKey("EmployeeId");
m.MapRightKey("ProjectId");
});