none
UpdateModel ó TryUpdateModel ?? RRS feed

  • Debate general

  • Hola Tengo una duda, cual debo TryUpdateModel o UpdateModel?, en mi codigo estaba usando Updatemodel, pero me dio un error que me decia que mi modelo no se podia actualizar, no entiendo porque sucedia, entonces cambie por TryUpdateModel y ahora funciona, entiendo que UpdateModel cuando no consigue actualizar el modelo lanza una excepcion, y TryUpdateModel devuelve un boolean, pero mi pregunta es si usar TryUpdateModel podria tener alguna consecuencia negativa sobre mi aplicacion.

    Saludos cordiales :)

    • Tipo cambiado Eder Costa martes, 16 de octubre de 2012 12:52
    jueves, 7 de julio de 2011 1:55

Todas las respuestas

  • Hasta donde yo se, esa es exactamente la diferencia entre TryUpdateModel y UpdateModel: uno devuelve bool y el otro lanza una excepción.

    Usar uno u otro depende de tus necesidades, no debería causarte problemas adicionales! ;-)

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    jueves, 7 de julio de 2011 6:20
  • Buenas

    La diferencia entre UpdateModel y TryUpdateModel es que el primero trata de actualizar siempre tu modelo completo de base de datos, mientras que el segundo solo modifica los atributos que han cambiado en tu modelo. Por ejemplo, imagínate que tienes puesto un atributo Not Null en una tabla que vas a actualizar, si en tu formulario no especificas un valor para dicho atributo, éste llegará a Null a la BD mediante tu modelo y provocará una excepción, mientras que si en el mismo escenario usas TryUpdateModel el modelo que se envía a la BD solo contiene los atributos que has modificado, es decir, el que has dejado a null porque no se ha especificado en el formulario, no se envía y es por eso por lo que no da error.

    Supongo que TryUpdateModel internamente lo que hará LINQ es sobreescribir los valores nulos por el valor existente en la entidad de BD. Seguramente sea un método más lento, pero más seguro que UpdateModel.

     

    Saludos

    jueves, 7 de julio de 2011 10:41
  • Buenas,

    como indica Eduard, excepto en la forma de indicar el éxito o fracaso de la operación, son funcionalmente idénticos; de hecho, UpdateModel() lo que hace internamente es llamar a TryUpdateModel() y lanzar una excepcíón si éste retorna false.

    Es curioso, porque siempre había pensado que era al revés, que TryUpdateModel() era una llamada a UpdateModel() envuelta en un try/catch, pero no.

    Saludos!


    José M. Aguilar
    Variable not found
    jueves, 7 de julio de 2011 12:13
  • Hola, es cierto que UpdateModel llama internamente a TryUpdateModel, pero aún así tienen un comportamiento raro. A mi me ocurrió en un proyecto que usando UpdateModel a secas, no me actualizaba bien, pero sin embargo, sí que lo hacía llamando a TryUpdateModel.
    lunes, 11 de julio de 2011 8:57