LINQ не обновляется .SubmitChanges()
Есть ли причина, по которой что-то подобное не работает?
Это логика, которую я использовал много раз для обновления записи в таблице с помощью 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()
; не обнаруживает требуемых обновлений.
Ответы
Ответ 1
Таблица не может быть обновлена должным образом, поскольку у нее не было первичного ключа. (На самом деле это столбец, но ограничение не было скопировано, когда я сделал SELECT INTO в моей таблице dev). Для класса DataContext требуется первичный ключ для обновлений.
Ответ 2
Является ли свойство InUse "нормальным" для LINQ? (например, он не автогенерирован или не напуган?)
В качестве альтернативы, я не думаю, что это Nullable <bool> , с текущим значением null? Если это так, ваша строка обновления фактически ничего не делает - для nullable Booleans,! Null = null.