Estás en: error Row not found or changed
Para dar las gracias debes entrar o registrarte en el foro
Hola compañeros, a ver si me podeis ayudar con esta duda:
Al ejecutar la siguiente linea de codigo
contextDb.SubmitChanges();
me salta dicha excepcion.
Hay veces que no me salta el error pero en la siguiente pagina a la que tengo q ir no se me muestran los cambios x lo q creo q aun asi no sube los cambios a la base de datos.
He leido por ahi que "la solución pasa por simplemente sincronizar la estructura de tu Base de Datos a nivel de campos con tu modelo de Linq To Sql."
Y
"Lo que tuve que hacer es eliminar las tablas del contexto y agregarlas de nuevo"
Pero no se como aplicarlo.
Otra dudilla que tengo a ver si asi apredo a depurar mejor, sabeis como puedo ver los valores de las tablas mientras estoy en ejecucion?
Muchas gracias de antemano
neverlook escribió:Hola compañeros, a ver si me podeis ayudar con esta duda:
Al ejecutar la siguiente linea de codigo
contextDb.SubmitChanges();
me salta dicha excepcion.
Hay veces que no me salta el error pero en la siguiente pagina a la que tengo q ir no se me muestran los cambios x lo q creo q aun asi no sube los cambios a la base de datos.
He leido por ahi que "la solución pasa por simplemente sincronizar la estructura de tu Base de Datos a nivel de campos con tu modelo de Linq To Sql."
Y
"Lo que tuve que hacer es eliminar las tablas del contexto y agregarlas de nuevo"
Pero no se como aplicarlo.
Otra dudilla que tengo a ver si asi apredo a depurar mejor, sabeis como puedo ver los valores de las tablas mientras estoy en ejecucion?
Muchas gracias de antemano
Hola, gracias por la idea, la he probado pero tambien me da error, mira os pongo un poco en situacion. Tengo dos textBox y dos DatePicker en una pagina que los cargo con valores de la base de datos y lo que quiero es modificarlos:
El problema lo tengo solamente con el textBox "txtNombre", es el unico que da problemas . Si solo modifico el txtNombre no me salta ningun error pero no sube ningun dato a la base de datos. El error del titulo me salta cuando modifico el "txtNombre" y algun otro parametro, por lo que ya se por que me da ese error. En cambio con los otros tres datos no hay problema, los cambio y se guardan en la base de datos. Os muestro el codigo:
private void GuardarCambios(object sender, RoutedEventArgs e)
{
using (AppDbContext contextDb = new AppDbContext("Data Source='isostore:/MiViajeDb.sdf'"))
{
//Recuperamos customers y actualizamos.
ListaViajes = (from Viaje viaje in contextDb.Viajes where viaje.ViajeId == id select viaje).ToList();
ListaViajes[0].Nombre = txtNombre.Text;
ListaViajes[0].FechaIni = fecIni.Value.Value;
ListaViajes[0].FechaFin = fecFin.Value.Value;
ListaViajes[0].Presupuesto = txtPresupuesto.Text;
//ListaViajes[0].Nombre = "Francisco";
//contextDb.Viajes.InsertOnSubmit(ListaViajes[0]); ----> me salta este error si meto esta linea
//Cannot add an entity that already exists.
/*StringBuilder sb = new StringBuilder();
sb.Append(String.Format("nombre: {0}\n", ListaViajes[0].Nombre));
Aqui si me muestra el dato cambiado, pero el metodo SubmitChanges no lo hace
sb.Append(String.Format("fecha ini: {0}\n", ListaViajes[0].FechaIni));
sb.Append(String.Format("fecha fin: {0}\n", ListaViajes[0].FechaFin));
sb.Append(String.Format("presupuesto: {0}\n", ListaViajes[0].Presupuesto));
MessageBox.Show("Boton guardar cambios \n"+ sb.ToString());*/
contextDb.SubmitChanges();
//contextDb.Viajes.InsertAllOnSubmit(ListaViajesAct);
}
contexto.IrPlanificacion.Execute("{Binding IrPlanificacion}");
}
Lo he estado revisando y creo q lo tengo todo igual que por ejemplo el "txtPresupuesto" pero vamos algo se me tiene que estar pasando.
Espero haberme explicado bien sino decirmelo
PD: Si habilito la linea //ListaViajes[0].Nombre = "Francisco"; todo me funciona correctamente, es decir que si sube el dato a la base de datos
Muchas gracias!!
Por lo que me parece, el fallo lo tienes en la estructura de la tabla, que tienes configurado el campo Nombre como entity, por lo que no permite duplicados, y seguramente ya exista un registro con ese valor en el campo nombre.
Revisa la estructura de tu tabla, y si tiene el campo como entity, quitaselo.
Sent from my HD7 T9292 using Board Express
Hola!
Ya parece que lo solucioné, en mi base de datos tengo declarado un identificador asi:
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int ViajeId
{
get { return viajeId; }
set { viajeId = value; this.OnPropertyChanging("ViajeId"); }
}
Y lo que hacia era actualizar los demas datos sin tocar el id,
ListaViajes[0].Nombre = txtNombre.Text;
ListaViajes[0].FechaIni = fecIni.Value.Value;
ListaViajes[0].FechaFin = fecFin.Value.Value;
ListaViajes[0].Presupuesto = txtPresupuesto.Text;
Pues bien, añdiendo la siguiente linea todo resuelto:
ListaViajes[0].ViajeId = id;
La verdad es que todavia no se muy bien la razon de porque tengo q tocar el id para subir los cambios.... pero bueno al menos puedo seguir adelante.
Muchas gracias por las respuestas!