Pregunta

¿Hay alguna razón por la que algo como esto no funcione?

Esta es la lógica que he usado muchas veces para actualizar un registro en una tabla con LINQ:

 DataClasses1DataContext db = new DataClasses1DataContext();
 User updateUser = db.Users.Single(e => e.user == user);
 updateUser.InUse = !updateUser.InUse;
 db.Log = new System.IO.StreamWriter(@"c:\temp\linq.log") { AutoFlush = true };
 db.SubmitChanges();

(updateUser.InUse es un campo de bits)

Por alguna razón no está funcionando. Cuando reviso linq.log, está completamente en blanco.

¿Podría haber un problema con mi .dbml? Otras tablas parecen funcionar bien, pero he comparado las propiedades en .dbml y todas coinciden.

Es como si el db.SubmitChanges(); no detecta ninguna actualización necesaria.

¿Fue útil?

Solución

La tabla no se pudo actualizar correctamente porque no tenía clave primaria. (En realidad, tenía la columna, pero la restricción no se copió cuando hice un SELECCIONAR EN mi tabla de desarrollo). La clase DataContext requiere una clave principal para las actualizaciones.

Otros consejos

¿La propiedad InUse es " normal " uno en lo que respecta a LINQ? (por ejemplo, no es autogenerado o algo funky como ese)

Alternativamente, no creo que sea un Nullable < bool > es, con un valor actual de nulo? Si es así, su línea de actualización en realidad no está haciendo nada: para booleanos anulables,! Null = null.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top