Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Exercício

Eu não sei se foi proposital mas as coisas que eu senti no exercício são:

  • Para gravar músicas era importante saber qual é o artista da música então fiz a tabela com um campo a mais:
CREATE TABLE [dbo].[Musicas] (
    [Id]        INT            IDENTITY (1, 1) NOT NULL,
    [Nome]      NVARCHAR (255) NOT NULL,
    [ArtistaID] INT            NOT NULL
);
  • com essa alteração eu criei a classe musicasDAL apenas com o consultar por artista:
class MusicaDAL
{
    private readonly ScreenSoundContext context;

    public MusicaDAL()
    {
        this.context = new ScreenSoundContext();
    }
    public MusicaDAL(ScreenSoundContext context)
    {
        this.context = context;
    }

    public List<Musica> ListarPorArtista(int artistaID)
    {
        if (context.Musicas.Any(x => x.ArtistaID == artistaID))
        {
            return context.Musicas.ToList().FindAll(x => x.ArtistaID == artistaID);
        }

        return new List<Musica>();
    }

    public void Incluir(Musica musica)
    {
        context.Musicas.Add(musica);
        context.SaveChanges();
    }

    public void Alterar(Musica musica)
    {
        context.Musicas.Update(musica);
        context.SaveChanges();
    }

    public void Excluir(Musica musica)
    {
        context.Musicas.Remove(musica);
        context.SaveChanges();
    }
}

e então testei as oções 2 e 4 do ScreenSound.

1 resposta
solução!

Olá Lucas! Tudo bem?

No seu código, a classe MusicaDAL está bem estruturada para as operações básicas de CRUD (Create, Read, Update, Delete). Aqui estão algumas sugestões que podem te ajudar:

  1. Consulta por Artista: A sua implementação do método ListarPorArtista está funcional, mas você pode simplificá-la usando o método Where do LINQ, que é mais eficiente:

    public List<Musica> ListarPorArtista(int artistaID)
    {
        return context.Musicas.Where(x => x.ArtistaID == artistaID).ToList();
    }
    
  2. Testes: Como mencionado no contexto da atividade, você pode testar suas implementações diretamente no Program fora do menu. Por exemplo:

    static void Main(string[] args)
    {
        var musicaDAL = new MusicaDAL();
        
        // Adicionar uma nova música
        var novaMusica = new Musica { Nome = "Nova Música", ArtistaID = 1 };
        musicaDAL.Incluir(novaMusica);
        
        // Listar músicas por artista
        var musicasDoArtista = musicaDAL.ListarPorArtista(1);
        foreach (var musica in musicasDoArtista)
        {
            Console.WriteLine($"Música: {musica.Nome}");
        }
    }
    
  3. Verificação de Existência: No método ListarPorArtista, você está verificando se existe alguma música com o ArtistaID antes de retornar a lista. Essa verificação é desnecessária, pois o método Where já retorna uma lista vazia se não encontrar correspondências.

No mais, bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!