我有两个模型类:
Empresa:
public class Empresa
{
public int EmpresaId { get; set;}
public string Nome { get; set; }
public string Cep { get; set; }
public ICollection<Funcionario> Funcionarios { get; set; }
}
功能键
public class Funcionario
{
public int FuncionarioId { get; set; }
public string Nome { get; set; }
public string Cargo { get; set; }
//Foreign Key
public int EmpresaId { get; set; }
public Empresa Empresas { get; set; }
}
我有一个EmpresaController
,有一个方法get从Empresa
返回所有数据:
//GET: api/empresa
[HttpGet]
public async Task<ActionResult<IEnumerable<Empresa>>> getEmpresas()
{
return await _context.Empresa.ToListAsync();
}
我需要在实体框架中生成此查询的结果,我该怎么做?
SELECT *
FROM dbo.Empresa e
JOIN Funcionario f ON (e.EmpresaId = f.EmpresaId)
@编辑:
格式错误的json:
我认为缺少}]?
答案 0 :(得分:0)
使用Linq Join查询
return await (from e in _context.Empresa
join f in _context.Funcionario on e.EmpresaId equals f.EmpresaId
select e).ToListAsync();
答案 1 :(得分:0)
您还需要在DbContext
类中设置此关系。
public class ApplicationDbContext {
protected override void OnModelCreating(ModelBuilder builder) {
// your other code here
builder.Entity<Funcionario>(entity => {
entity.HasOne(e => e.Empresa)
.WithMany(e => e.Funcionarios);
});
// rest of your code
}
}
答案 2 :(得分:0)
您可以只使用一个include来实现所需的内容(它在内部执行连接)
[HttpGet]
public async Task<ActionResult<IEnumerable<Empresa>>> getEmpresas()
{
var empresas = await _context.Empresas.Include(t=> t.Funcionarios).ToListAsync();
return Ok(empresas);
}