Linq - строка не найдена или изменена - PullRequest
15 голосов
/ 04 февраля 2009

У меня есть следующий код:

        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 не указано "где id = ...." ???

Что я делаю не так?

Мое приложение генерирует исключение ChangeConflictException с сообщением ... "Строка не найдена или изменена"

Ответы [ 3 ]

38 голосов
/ 04 февраля 2009

Убедитесь, что ваша модель соответствует БД. Я столкнулся с этим, если они не синхронизированы, в большинстве случаев обнуляемый флаг. Проверьте эту статью для возможной причины.

Я предполагаю, что вы используете выпускную версию .net 3.5 (Visual Studio 2008).

1 голос
/ 16 июня 2011

Нашел решение в: http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/c672c8ee-bf2a-41b4-bb8b-aa76cc5d9b95 (опубликовано Тоддом Флинором)

Эту ошибку можно решить, перетащив таблицу из обозревателя серверов в конструктор и перестроив. Таким образом, дизайнер не синхронизирован с таблицей SQL ...

0 голосов
/ 29 августа 2012

У меня была такая же проблема, я просто удалил таблицу в файле .dbml (конструктор) и снова удалил ее из базы данных, затем построил свое приложение. Это решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...