Usuario
Comportamiento extraño: algunos campos se actualizan otros no, SubmitChanges

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?
private void EditDog_Click(object sender, EventArgs e)
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:
{
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));
}
}
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");
}
}
-
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