none
Salvando objeto de modelo em Action (Dúvida) RRS feed

  • Pergunta

  • Olá pessoal, estou estudando asp.net mvc e desenvolvendo um projeto particular a fins de estudo e tenho algumas duvidas:

    OBS: Estou aplicando DDD.

    Tenho uma Action em meu controller, que irá salvar dados de um registro (entidade produto em meu modelo).
    Ai teoricamente receberia um objeto dessa minha entidade e salvaria esta no bd, algo do tipo:

    public ActionResult Salvar(Produto produto)
    {
      // salva dados
      return View("Sucesso");
    }
    

    A dúvida é: se devo receber direto um objeto do tipo Produto (entidade do modelo), ou é recomendado criar um objeto DTO (com a mesma estrutura de produto), e transferir cada propriedade deste para uma instância de Produto (entidade do modelo) ?

    Esta minha classe Produto (entidade), está mapeada com o ORM NHibernate; seriar um problema ao receber
    diretamente um objeto deste tipo em meu método ?

    Obrigado a todos!
    Abraços

    Felipe


    Felipe Oriani - www.felipeoriani.com.br
    MCP - Microsoft Certified Professional
    ...O rio atinge os seu objetivos porque aprendeu a contornas os obstáculos... por André Luiz
    segunda-feira, 26 de abril de 2010 16:21

Respostas

  • Fala Felipe,

    >> Esta minha classe Produto (entidade), está mapeada com o ORM NHibernate; seriar um problema ao receber
    >> diretamente um objeto deste tipo em meu método ?

    Vai ser uma chateação ficar criando DTO's para cada classe... Não acho que seja necessário, nem elegante.
    Você conhece o TryUpdateModel? Eu faço assim:


    public ActionResult Criar(Produto produto)
    {
      // salva dados
      return View("Sucesso");
    }

    public ActionResult Salvar(Produto produto)
    {
      // Lê o produto do BD
      var produtoExistente = RepositorioProduto.Read(produto.Codigo);
     
      // Atualiza o produto salvo com os dados que foram passados
      TryUpdateModel(produtoExistente);
     
      // salva "produtoExistente"
     
      return View("Sucesso");
    }

     



    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    • Marcado como Resposta Felipe B Oriani terça-feira, 27 de abril de 2010 11:37
    segunda-feira, 26 de abril de 2010 20:40
    Moderador

Todas as Respostas

  • Fala Felipe,

    >> Esta minha classe Produto (entidade), está mapeada com o ORM NHibernate; seriar um problema ao receber
    >> diretamente um objeto deste tipo em meu método ?

    Vai ser uma chateação ficar criando DTO's para cada classe... Não acho que seja necessário, nem elegante.
    Você conhece o TryUpdateModel? Eu faço assim:


    public ActionResult Criar(Produto produto)
    {
      // salva dados
      return View("Sucesso");
    }

    public ActionResult Salvar(Produto produto)
    {
      // Lê o produto do BD
      var produtoExistente = RepositorioProduto.Read(produto.Codigo);
     
      // Atualiza o produto salvo com os dados que foram passados
      TryUpdateModel(produtoExistente);
     
      // salva "produtoExistente"
     
      return View("Sucesso");
    }

     



    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    • Marcado como Resposta Felipe B Oriani terça-feira, 27 de abril de 2010 11:37
    segunda-feira, 26 de abril de 2010 20:40
    Moderador
  • Valeu André, vou pesquisar a respeito e implementar em minha solução!

    Obrigado

    Att,


    Felipe Oriani - www.felipeoriani.com.br
    MCP - Microsoft Certified Professional
    ...O rio atinge os seu objetivos porque aprendeu a contornas os obstáculos... por André Luiz
    terça-feira, 27 de abril de 2010 11:37