Vinicius Quaiato

{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}

MVC Scaffolding e relacionamentos no Model


neurônios

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.

Definindo uma relação simples

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&gt;


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.MVC Scaffolding relacionamento simples

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:MVC Scaffolding view com relacionamento

Exibindo as relações nas views de listagem

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:MVC Scaffolding index views

MVC Scaffolding index views 2

Resumindo...

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.

Voltar

Fork me on GitHub