Existe uma maneira melhor de atualizar minhas entidades com a estrutura de entidades?

Eu realmente não tenho um "problema", mas achei que a maneira como desenvolvo esse código não está muito bem.

Eu tenho meu controlador c, oztries (método Edit) (camada WebUI):

    [HttpGet]
    public ActionResult Edit(int id)
    {
        var country = _groupsRepository.getCountryById(id);
        Mapper.CreateMap<Country, CountriesEditViewModel>(); 
        CountriesEditViewModel viewModel = Mapper.Map<Country, CountriesEditViewModel>(country);
        return View(viewModel);
    }
    //
    // POST: /CountriesAdmin/Edit/5
    [HttpPost]
    public ActionResult Edit(int id, CountriesEditViewModel viewModel)
    {
        try
        {
            if (ModelState.IsValid)
            {
                Mapper.CreateMap<CountriesEditViewModel, Country>();
                Country country = Mapper.Map<CountriesEditViewModel, Country>(viewModel);
                country.Name = IntranetTools.UppercaseFirst(country.Name.Trim());
                country.ISOCode = country.ISOCode.ToLower();
                _countryValidationService.UpdateCountry(country);
            }
        }
        catch (RulesException ex)
        {
            ex.CopyTo(ModelState);
        }

        if (ModelState.IsValid)
            return RedirectToAction("Index");
        else return View(viewModel);
    }

E meu serviço de validação (camada de domínio):

    public void UpdateCountry(Country country)
    {
        EnsureValidForUpdate(country);
        // UPDATE
        var countryToUpdate = _groupsRepository.getCountryById(country.CountryId);
        countryToUpdate.CountryId = country.CountryId;
        countryToUpdate.Name = country.Name;
        countryToUpdate.ISOCode = country.ISOCode;
        _groupsRepository.SaveChanges();

    }

Na verdade, como você pode ver, eu uso o Automapper para mapear minha entidade do país (Entity Framework) e minha visualização Model. Eu uso um serviço de validação que faz a validação e atualiza meu objeto (se não houver erros) no banco de dados. O fato é que sinto que devo obter meu objeto do banco de dados pelo seu ID para salvar esse objeto. Eu acho que talvez exista uma solução melhor para atualizar meu objeto (porque eu não quero mapear todos os campos para meus objetos e obter o país do banco de dados toda vez)

        var countryToUpdate = _groupsRepository.getCountryById(country.CountryId);
        countryToUpdate.CountryId = country.CountryId;
        countryToUpdate.Name = country.Name;
        countryToUpdate.ISOCode = country.ISOCode;
        _groupsRepository.SaveChanges();

Existe uma solução melhor para salvar meus objetos com a entidade Framwork ou não tenho escolha?

Obrigado !

questionAnswers(2)

yourAnswerToTheQuestion