1
resposta

Relação tabela Cadastro

No método:

    public Cadastro Update(int cadastroId, Cadastro novoCadastro)
    {
        var cadastroDB = dbSet.Where(c => c.Id == cadastroId)
            .SingleOrDefault();

        if (cadastroDB == null )
        {
            throw new ArgumentNullException("Cadastro");
        }

        cadastroDB.Update(novoCadastro);
        contexto.SaveChanges();
        return cadastroDB;
    }

Como a aplicação sabe que esse trecho, var cadastroDB = dbSet.Where(c => c.Id == cadastroId) .SingleOrDefault(); deve ser feito na tabela cadastro. Como isso é amarrado ?

insira seu código aqui
1 resposta

Olá Marcos, tudo certo?

Vou tentar explicar passo a passo como está funcionando esse método. De antemão, se continuar com alguma dúvida, sinta-se confortável para questionar novamente.

Na Interface ICadastroRepository, já declaramos obrigatório a utilização do método nas classes que trazem essa Interface. Note que este método trás a class Cadastro tanto no tipo, quanto em um dos campo:

Cadastro Update(int cadastroId, Cadastro novoCadastro);

Agora na class CadastroRepository, onde herdamos a Interface ICadastroRepository. Iremos utilizar o método obrigatório. Logo no inicio, declaramos a variável cadastroDB:

var cadastroDB = dbSet.Where(c => c.Id == cadastroId).SingleOrDefault();

O dbSet irá seguir com o novo cadastro, mas antes ele irá verificar se esse Idjá existe. O Where irá trabalhar como uma espécie de filtro para o Id: Where(c => c.Id == cadastroId). Já o SingleOrDefault(), irá trabalhar para validar esse filtro do Where, verificando se realmente esse Id é único.

A seguir, temos apensas um if, fazendo uma pequena validação para caso de null:

if (cadastroDB == null)
            {
                throw new ArgumentNullException("cadastro");
            }

Se tudo ocorreu bem até aqui, o programa irá fazer o Update do novo cadastro. Agora estamos utilizando o segundo campo do método Cadastro novoCadastro:

cadastroDB.Update(novoCadastro);

Para finalizar, iremos fazer o SaveChanges() desse novo cadastro:

context.SaveChanges();

Abraços e bons estudos!