Как я могу сделать соединение, используя два модельных класса в Entity Framework - PullRequest
1 голос
/ 13 июня 2019

У меня есть два модельных класса:

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; }
 }

Funcionario

 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)

@ Edit:

Искаженный JSON:

errorjson

Я думаю, что отсутствует}]?

Ответы [ 3 ]

0 голосов
/ 13 июня 2019

Вам необходимо также установить эти отношения в вашем классе 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
    }
}
0 голосов
/ 13 июня 2019

Вы можете просто использовать включение для достижения того, что вы хотите (оно выполняет объединение внутри)

[HttpGet]
public async Task<ActionResult<IEnumerable<Empresa>>> getEmpresas()
{
    var empresas =  await _context.Empresas.Include(t=> t.Funcionarios).ToListAsync();
    return Ok(empresas);
}

0 голосов
/ 13 июня 2019

Используйте запрос присоединения Linq

return await (from e in _context.Empresa
              join f in _context.Funcionario on e.EmpresaId equals f.EmpresaId
              select e).ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...