{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}
14/02/2011
Mostrei como utilizar o MVC Scaffolding neste por aqui. O MVC Scaffolding nos permite criar código para tarefas repetitivas e sem muito valor de negócio. Aquele código mais de infra e simples: controllers básicos, views, repositórios, etc. Confira lá para entender um pouco mais.Desta vez vou mostrar um pouco como utilizar o MVC Scaffolding com relacionamentos entre classes do nosso model.
Vamos trabalhar com a idéia de Receita e Categorias. Abaixo temos a classe para representar nossas categorias:
public class Categoria{
public string Nome { get;
set;
}
public int CategoriaId { get;
set;
}
}
Vamos criar uma classe para representar nossas receitas:
public class Receita{
public string Nome { get;
set;
}
public int TempoPreparo { get;
set;
}
public int CategoriaId { get;
set;
}
}
Se as classes acima precisam de explicação: http://bit.ly/hvQQ7fReparem na linha 5. Esta é a mágica de um relacionamento para o MVC Scafolding. Uma propriedade do tipo <
Model>
Id define uma relação. No exemplo acima uma receita possui uma relação com uma categoria.Vamos então executar o scaffolding:
Scaffold Controller ReceitaScaffold Controller Categoria
Isso irá criar nossos controllers, contextos do EF4 e views.
Agora podemos ver na view de criação de uma receita que o MVC Scaffolding já nos colocou um dropdown para selecionarmos a qual categoria esta receita pertence:
Para exibirmos as relações nas views de listagem(index) vamos modificar um pouco nosso model para conter informações além de simplesmente o id.Ficaremos com classes assim:
public class Categoria{
public string Nome { get;
set;
}
public int CategoriaId { get;
set;
}
public virtual ICollection<receita> Receitas { get;
set;
}
public override string ToString() {
return this.Nome;
}
}
</receita>
Vejam na linha 6 podemos ver que temos uma coleção de receitas. Desta forma é possível saber quais as receitas estão presentes em uma categoria.O override do método ToString é apenas para facilitar as views.
public class Receita{
public string Nome { get;
set;
}
public int TempoPreparo { get;
set;
}
public int ReceitaId { get;
set;
}
public int CategoriaId { get;
set;
}
public virtual Categoria Categoria { get;
set;
}
}
Aqui apenas uma alteração na linha 8 onde criamos uma propriedade do tipo Receita.Vamos executar os comandos de scaffolding novamente, desta vez com o parâmetro -Force, para sobrescrever o código já usado antes:
Scaffold Controller Receita -ForceScaffold Controller Categoria -Force
Com isso temos como resultado:
O MVC Scaffolding vai ajudar muito nestas atividades mais "braçais" e vale muito acompanhar e utilizar o projeto.O blog do Steve Sanderson possui muitas informações mais detalhadas sobre a ferramenta. Confira aqui.
Abraços, Vinicius Quaiato.