ASP.Net MVC 3 Anotações de dados do ViewModel

Estou desenvolvendo um aplicativo da Web ASP.Net MVC 3 com o Entity Framework 4.1 e estou ficando um pouco confuso com relação ao uso de Anotações de Dados para validação de formulário. Eu sempre retorno um ViewModel para um View, em vez de passar o objeto real, pois percebo que é uma prática ruim. Por exemplo

public class ViewModelTeam
{
    public Team Team { get; set; }
}

My View pode ter algo parecido com isto

@model UI.ViewModels.ViewModelTeam

    @Html.HiddenFor(model => model.Team.teamID)


    <div class="editor-label">
        @Html.LabelFor(model => model.Team.description)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Team.description)
        @Html.ValidationMessageFor(model => model.Team.description)
    </div>

Para validar essa visualização, criei Anotações de dados em uma classe parcial como essa

[MetadataType(typeof(TeamMetaData))]
public partial class Team
{
    public class TeamMetaData
    {
        [DisplayName("Team Name")]
        [Required(ErrorMessage = "Please enter a Team Name")]
        public object description { get; set; }

E então, no meu create Controller, tenho este

[HttpPost]
    public ActionResult Create(Team team)
    {
        if (ModelState.IsValid)
        {
           //Add team and redirect
        }

          //Got this far then errors have happened
          //Add Model State Errors


        ViewModelTeam viewModel = new ViewModelTeam
        {
            Team = team            
        };

        return View(viewModel);
    }

Agora, isso funciona bem, no entanto, quanto mais eu leio sobre o ViewModels e a validação, mais parece que é o ViewModel que deve ser validado, porque no final do dia, é o ViewModel que está sendo exibido no Vista, não o objeto.

Portanto, mudei meu ViewModel para que parecesse o seguinte

public class ViewModelListItem
{

    public int teamID { get; set; }

    [DisplayName("Item Name")]
    [Required(ErrorMessage = "Please enter a Team Name")]
    public string description { get; set; }

E também mudei meu create Controller para este

[HttpPost]
    public ActionResult Create(Team team)
    {
        if (ModelState.IsValid)
        {
           //Add team and redirect
        }

          //Got this far then errors have happened
          //Add Model State Errors

        ViewModelTeam viewModel = new ViewModelTeam();
     viewModel.description = team.description;

        return View(viewModel);
    }

Novamente, isso funciona, mas sinto que o segundo método é um pouco confuso ou não é tão eficiente na primeira maneira de fazer iss

Estaria interessado em ouvir as opiniões de outras pessoas sobre isso. Obrigado por sua ajuda e peço desculpas por um post tão long

questionAnswers(2)

yourAnswerToTheQuestion