Сначала я использую код EF, где я создал связь «многие ко многим» между Provider
и Department
.
public class Provider
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Department> Departments { get; set; }
}
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Provider> Providers { get; set; }
}
modelBuilder.Entity<Provider>()
.HasMany(p => p.Departments)
.WithMany(d => d.Providers)
.Map(m =>
{
m.MapLeftKey("ProviderId");
m.MapRightKey("DepartmentId");
m.ToTable("ProviderDepartment");
});
Я пытаюсь написать запрос linq, который был бы эквивалентен приведенному ниже SQL-запросу, но таблица ProviderDepartment не является частью DbContext.
select p.LastName, d.Name
from Provider p
join ProviderDepartment pd on p.Id = pd.ProviderId
join Department d on pd.ProviderId = d.Id
where d.Name like 'er%'
or p.LastName like 'er%'
Результатом должны быть Provider и Department, где либо Provider.LastName, либо Department.Name начинаются с «er».
--------------------------
| LastName | Name |
--------------------------
| Selfa | ER |
| Erickson | Radiology|
--------------------------
Любая помощь будет оценена по достоинству.