Question

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. When 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.

It's as if the db.SubmitChanges(); does not detect any updates being required.

Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top