Bom dia. Acredido que tu queiras um relacionamento one-to-many entre duas entre duas entidades. Modelei esse relacionamento usando as entidade Departamento e Funcionario, onde um departamento pode conter vários funcionários e um funcionário pertence a somente um departamento. A lógica é a mesma.
public class Departamento
{
public int Id { get; set; }
public string Descricao { get; set; }
public bool Ativo { get; set; }
public List<Funcionario> Funcionarios { get; set; }
public override string ToString()
{
return $"Nome: {this.Descricao} Ativo: {this.Ativo}";
}
}
public class Funcionario
{
public int Id { get; set; }
public string Nome { get; set; }
public string CPF { get; set; }
public string RG { get; set; }
public bool Ativo { get; set; }
public int DepartamentoId { get; set; }
public Departamento Departamento { get; set; }
}
Note que a propriedade public List<Funcionario> Funcionarios { get; set; }
na entidade Departamento é opcional para o relacionameto, mas a sua declaração torna a busca mais fácil.
Agora um exemplo de inserção e consulta:
public static void Main()
{
using var db = new EmpresaContext();
var dp = new Departamento()
{
Descricao = "Departamento 01",
Ativo = true,
};
db.Departamentos.Add(dp);
db.SaveChanges();
var dep = db.Departamentos.Find(dp.Id);
var fun1 = new Funcionario()
{
Nome = "Romvlo Avgvstvs",
CPF = "14567039465",
RG = "1120362",
Ativo = true,
DepartamentoId = dp.Id
};
db.Funcionarios.Add(fun1);
var fun2 = new Funcionario()
{
Nome = "Jvlivs Caesar",
CPF = "14567039465",
RG = "1120362",
Ativo = true,
DepartamentoId = dp.Id
};
db.Funcionarios.Add(fun2);
db.SaveChanges();
var departamentos = db
.Departamentos
.Include(p => p.Funcionarios);
foreach (var departamento in departamentos)
{
Console.WriteLine("---------------------------------------");
Console.WriteLine($"Departamento: {departamento.Descricao}");
if (departamento.Funcionarios?.Any() ?? false)
{
foreach (var funcionario in departamento.Funcionarios)
{
Console.WriteLine($"\tFuncionario: {funcionario.Nome}");
}
}
else
{
Console.WriteLine($"\tNenhum funcionario encontrado!");
}
}
}
Resultado:
Id | Descricao | Ativo | Funcionarios |
---|
1 | Departamento 01 | True | System.Collections.Generic.List |
Id | Nome | CPF | RG | Ativo | DepartamentoId | Departamento |
---|
1 | Romvlo Avgvstvs | 14567039465 | 1120362 | True | 1 | Nome: Departamento 01 Ativo: True |
2 | Jvlivs Caesar | 14567039465 | 1120362 | True | 1 | Nome: Departamento 01 Ativo: True |
La listagem acima o único ponto de atenção é a instrunção
var departamentos = db
.Departamentos
.Include(p => p.Funcionarios);
na qual eu incluo a propriedade Funcionarios para que o entity traga todos funcionário de um departamento.
Pra ver rodando direto, consulte essa ulr.
Bons estudos.