LINQ не обновляется в .SubmitChanges () - PullRequest
21 голосов
/ 16 октября 2008

Есть ли причина, по которой что-то подобное не будет работать?

Это логика, которую я много раз использовал для обновления записи в таблице с помощью 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 - битовое поле)

По какой-то причине это не работает. Когда я проверяю linq.log, он полностью пуст.

Может ли быть проблема с моим .dbml? Другие таблицы работают нормально, но я сравнил свойства в .dbml, и все они совпадают.

Это как если бы db.SubmitChanges(); не обнаруживает каких-либо необходимых обновлений.

Ответы [ 2 ]

68 голосов
/ 16 октября 2008

Невозможно правильно обновить таблицу, так как у нее нет первичного ключа. (На самом деле у него был столбец, но ограничение не было скопировано, когда я сделал SELECT INTO в моей таблице dev). Классу DataContext требуется первичный ключ для обновлений.

2 голосов
/ 16 октября 2008

Является ли свойство InUse «нормальным» для LINQ? (например, он не генерируется автоматически или что-то в этом роде?)

В качестве альтернативы, я не думаю, что это Nullable с текущим значением null? Если так, ваша строка обновления фактически ничего не делает - для логических значений, допускающих нулевое значение,! Null = null.

...