Linq - строка не найдена или изменена
У меня есть следующий код:
Guid id = imageMetaData.ID;
Data.LinqToSQL.Image dbImage = DBContext.Images.Where(x => x.ID == id).SingleOrDefault();
dbImage.width = imageMetaData.Width;
dbImage.height = imageMetaData.Height;
DBContext.SubmitChanges();
Глядя на SQL Profiler, создается следующий SQL:
exec sp_executesql N'UPDATE [dbo].[Images]
SET [height] = @p0, [width] = @p1
WHERE 0 = 1',N'@p0 int,@p1 int',@p0=603,@p1=365
Почему мой оператор where не включает "where id =...."???
Что я делаю неправильно?
Мое приложение выдает исключение ChangeConflictException сообщением... "Строка не найдена или изменена"
Ответы
Ответ 1
Убедитесь, что ваша модель соответствует БД. Я столкнулся с этим, если они не синхронизированы, в большинстве случаев флаг с нулевым значением. Ознакомьтесь с этой статьей для возможной причины.
Я предполагаю, что вы используете версию выпуска .net 3.5 (Visual Studio 2008).
Ответ 2
Нашел решение в: http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/c672c8ee-bf2a-41b4-bb8b-aa76cc5d9b95
(опубликовано Тоддом Фленором)
Проблема может быть решена этой ошибкой, перерисовывая таблицу из проводника сервера дизайнеру и перестраивая. Поэтому разработчик не синхронизировался с таблицей SQL...
Ответ 3
У меня была та же проблема и только что удалила таблицу в .dbml файле (дизайнер) и снова удалила из базы данных, а затем построила мое приложение. Он решил мою проблему.