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!