Question

Y a-t-il une raison pour que quelque chose comme cela ne fonctionne pas?

C’est la logique que j’ai souvent utilisée pour mettre à jour un enregistrement dans une table avec 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 est un champ de bits)

Pour une raison quelconque, cela ne fonctionne pas. Lorsque je vérifie le fichier linq.log, il est complètement vide.

Peut-il y avoir un problème avec mon .dbml? Les autres tables semblent bien fonctionner, mais j'ai comparé les propriétés du fichier .dbml et elles correspondent toutes.

C'est comme si le db.SubmitChanges(); ne détecte aucune mise à jour requise.

Était-ce utile?

La solution

La table n'a pas pu être mise à jour correctement car elle ne contenait pas de clé primaire. (En réalité, il contenait la colonne, mais la contrainte n'était pas copiée lorsque j'ai fait SELECT INTO dans ma table de développement). La classe DataContext requiert une clé primaire pour les mises à jour.

Autres conseils

La propriété InUse est-elle un " normal " un en ce qui concerne LINQ? (par exemple, ce n'est pas généré automatiquement ou quelque chose de génial comme ça?)

Alternativement, je ne suppose pas que ce soit un Nullable < bool > est-ce avec une valeur actuelle nulle? Si tel est le cas, votre ligne de mise à jour ne fait rien - pour les booléens nullables,! Null = null.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top