none
Comportamiento extraño: algunos campos se actualizan otros no, SubmitChanges RRS feed

  • Pregunta

  • Hola a todos! 

    Tengo una página para modificar los datos de una mascota, se puede modificar la foto ya insertada o varios campos, pero resulta que algunas veces me actualiza los campos y otras no. Y lo más extraño de todo es que nunca puedo actualizar ni el nombre,  ni la foto. 

    Es decir cuando le doy al botón editar y vuelve al MainPage, están los datos actualizados. Incluso si le vuelvo a dar a la mascota para ver sus datos salen correctos, pero si le voy dando hacia atrás para salir de la aplicación y finalmente salgo, cuando vuelvo a entrar vuelve a tener el nombre y la foto anterior. 

    ¿Qué puede estar ocurriendo? 

    El nombre y la foto los enseño en el MainPage mediante Bindings en un control RadCustomHubTile de Telerik, e incluso había pensado que al ir hacia atrás en el historial de páginas para salir podría modificar la base de datos... ¿Podría ser? Estos Bindings que digo no tenían establecido el Mode pero incluso cambiándolo a OneWay no se arregla nada. 

    Os dejo el código del edit por si veis algo raro: 

      private void EditDog_Click(object sender, EventArgs e)
            {
                
                 string id;
                 if (NavigationContext.QueryString.TryGetValue("DogId", out id))
                 {
                     int intId = Int32.Parse(id);
                     var query = (from dog in DogDiaryDataContext.Current.Dogs
                                  where dog.dogId == intId
                                  select dog).First();


                     if (txtDogName.Visibility == Visibility.Visible)
                     {
                         query.dogName = txtDogName.Text;
                     }

                     if (acDogBreed.Visibility == Visibility.Visible)
                     {
                         query.dogBreed = acDogBreed.Text;
                     }

                     if (tgDogSex.Visibility == Visibility.Visible)
                     {
                         Sex auxSex;
                         if (tgDogSex.IsChecked == false)
                             auxSex = Sex.Male;
                         else
                             auxSex = Sex.Female;
                         query.dogSex = auxSex;
                     }

                     if (tgDogSterilized.Visibility == Visibility.Visible)
                     {
                         Boolean auxSter;
                         if (tgDogSterilized.IsChecked == false)
                             auxSter = false;
                         else
                             auxSter = true;
                         query.dogSterilized = auxSter;
                     }

                     if (dtDogBirthDate.Visibility == Visibility.Visible)
                     {
                         query.dogBirthDate = (System.DateTime) dtDogBirthDate.Value;
                     }

                     if (txtDogWeight.Visibility == Visibility.Visible)
                     {
                         query.dogWeight = Int32.Parse(txtDogWeight.Text);
                     }

                     if (txtDogSize.Visibility == Visibility.Visible)
                     {
                         query.dogSize = Int32.Parse(txtDogSize.Text);
                     }

                     if (txtDogMicrochip.Visibility == Visibility.Visible)
                     {
                         query.dogMicrochipCode = txtDogMicrochip.Text;
                     }

                     if (txtDogPassport.Visibility == Visibility.Visible)
                     {
                         query.dogPassportNumber = txtDogPassport.Text;
                     }


                     if (imgObtenida.Source != null)
                     {
                         byte[] byteArray = null;
                         byteArray = pasarFotoAByteArray(imgObtenida.Source);
                         query.dogPhoto = byteArray;
                     }

                     DogDiaryDataContext.Current.SubmitChanges();
                     NavigationService.Navigate(new Uri("/DogDiary;component/MainPage.xaml", UriKind.Relative));
                 }
            }

    miércoles, 3 de abril de 2013 19:37

Todas las respuestas

  • Os pongo también el fragmento del Modelo de los campos conflictivos: 

     [Column(IsPrimaryKey = true, IsDbGenerated = true)]
            public int dogId
            {
                get { return dogid; }
                set
                {
                    dogid = value;
                    this.OnPropertyChanging("dogId");
                }
            }

            [Column(DbType = "image", CanBeNull = true)]
            public byte[] dogPhoto
            {
                get { return dogphoto; }
                set
                {
                    dogphoto = value;
                    this.OnPropertyChanging("dogPhoto");
                }
            }


            [Column (CanBeNull=false)]
            public string dogName
            {   
                get { return dogname; }
                set
                {
                    dogname = value;
                    this.OnPropertyChanging("dogName");
                }
            }

    miércoles, 3 de abril de 2013 22:21
  • Hola Viriginia!

    Así a primera vista, no veo el error... ¿Puedes reproducir el error en una app de ejemplo sencillita y enviármela por mail? josueyeray [at] gmail [dot] com

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    jueves, 4 de abril de 2013 7:33
    Moderador