Na aula 05, "Salvando música com gênero", o professor usa o seguinte código:
private static ICollection<Genero> GeneroRequestConverter(ICollection<GeneroRequest> generos, DAL<Genero> dalGenero)
{
var listaDeGeneros = new List<Genero>();
foreach (var item in generos)
{
var entity = RequestToEntity(item);
var genero = dalGenero.RecuperarPor(g=>g.Nome.ToUpper().Equals(item.Nome.ToUpper()));
if (genero is not null)
{
listaDeGeneros.Add(genero);
}
else
{
listaDeGeneros.Add(entity);
}
}
return listaDeGeneros;
}
A utilização dessa verificação se o gênero não é nulo, se torna desnecessária, na minha opnião. Entendo que ele pode ter aproveitado o contexto para explicar o tracking do EF, mas acho que ele poderia ter usado outra situação para abordar esse conceito, e simplificar essa lógica.
Como o objetivo aqui é que gêneros que já existam não sejam adicionandos novamente ao banco, podemos apenas verificar se o gênero buscado é nulo, e, apenas se ele for, adicionamos ele na lista final que será retornada. Deixando a lógica mais simples e objetiva, e reduzindo linhas de código:
private static ICollection<Genero> GeneroRequestConverter(ICollection<GeneroRequest> generos, DAL<Genero> DALGenero)
{
var listaGeneros = new List<Genero>();
foreach (var item in generos)
{
var genero = DALGenero.RecuperarPor(g => g.Nome!.ToUpper().Equals(item.Nome.ToUpper()));
if (genero is null) listaGeneros.Add(RequestToEntity(item));
}
return listaGeneros;
}