У меня есть 3 таблицы, которые связаны между собой. Employee, Relative, RelationTypeCatalog. Это отношение IX_Relatives_EmployeeId и IX_Relatives_RelationTypeCatalogId.
Как мне написать этот запрос с EF?
Я пытаюсь получить информацию от сотрудника, список родственников этого сотрудника и тип их отношений. До сих пор я пробовал эти варианты:
public async Task<Employee> GetEmployee(int id)
{
//(1) tried this
return await _context.Employees
.Include(emp=> emp.Relatives.Select(rel=>
rel.RelationTypeCatalog))
.FirstOrDefaultAsync(emp=>emp.Id == id);
}
//(2) also tried this...
public async Task<Employee> GetEmployee(int id)
{
var test = (from e in _context.Employees
join re in _context.Relatives
on e.Id equals re.EmployeeId
join t in _context.RelationTypes
on re.RelationTypeCatalogId equals t.Id
where e.Id == id
select e).FirstOrDefaultAsync();
return await test;
}
Вот так выглядит запрос с SQL
SELECT *
from sagrha.employees
inner join sagrha.relatives
on employees.Id = relatives.EmployeeId
inner join sagrha.relationtypes
on relatives.RelationTypeCatalogId= sagrha.relationtypes.Id;
Я ищу результат json, который будет выглядеть как
{
"id": 1,
"name": "Homero",
"gender": "male",
"relatives": [
"Name":"Bart"
"RelationType":"Child"
]
}