views:

3059

answers:

2

Is there any reason something like this would not work?

This is the logic I have used many times to update a record in a table with 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 is a bit field)

For some reason it isn't working?

If I check the linq.log it is completely blank?

Could there be a problem with my .dbml? Other tables seem to work fine but I've compared properties in the .dbml and they all match.

Its as if the db.SubmitChanges(); does nto detect any updates being required.

+2  A: 

Is the InUse property a "normal" one as far as LINQ is concerned? (e.g. it's not autogenerated or anything funky like that?)

Alternatively, I don't suppose it's a Nullable<bool> is it, with a current value of null? If so, your update line isn't actually doing anything - for nullable Booleans, !null = null.

Jon Skeet
updateUser.InUse = !updateUser.InUse;is not the problem. it is not nullable and i've tried hardcoding both false and true.it is not auto generated.
ctrlShiftBryan
If you change any other fields, does it update?
Jon Skeet
+15  A: 

The table could not be updated properly because it had no primary key. (Actually it had the column but the constraint was not copied when I did a SELECT INTO my dev table). The DataContext class requires a primary key for updates.

ctrlShiftBryan
This solved my problem also, thanks!
Tuoski