Ошибка конфликта Linq - PullRequest
1 голос
/ 24 июля 2011

Я постоянно получаю их на своем сайте, посетители также регулярно сообщают о них.Обновление страницы всегда исправляет это.Вот типичный отчет по электронной почте, полученный от сервера:

Ошибка в: http://www.scirra.com/ReleaseView.aspx?rtitle=r49 Сообщение об ошибке: строка не найдена или изменена.Трассировка стека: в System.Data.Linq.ChangeProcessor.SubmitChanges (ConflictMode faultMode) в System.Data.Linq.DataContext.SubmitChanges (ConflictMode faultMode) в LoggedInUser..ctor () в MasterPages_Main.Page_Init (событие объекта отправителя, событиеSystem.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, Object t, EventArgs e) в System.Web.UI.Control.InitRecursive (Control namingContainer) в System.Web.UI.Control.InitRecursive (Control namingContainer)в System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Это не дает номер строки или что-либо еще очень полезное.Страница, о которой идет речь, не делает ничего сложного.

Есть идеи?Это не ошибка, которую мне удалось воспроизвести, она постоянно повторяется.

Ответы [ 2 ]

2 голосов
/ 24 июля 2011

Подозреваю, что ваш LINQ To SQL .dbml не синхронизирован с вашей базой данных.Либо модель старая, либо производственная база данных не такая, как при создании .dbml.Были ли изменены какие-либо столбцы?Возможно, у столбца был изменен статус обнуляемого элемента?

Попробуйте удалить и добавить эту таблицу из вашей области разработки .dbml.Не уверены, что у вас есть несколько сред (dev / test / prod), но внесите это изменение .dbml в рабочую базу данных и повторно разверните приложение.

Возможно, дважды проверьте, что ваша таблица и сущность dbml совпадаютвы ожидаете, свойство за свойством на обнуляемые атрибуты. Другая проблема с тем же симптомом .Также рассмотрите любые столбцы DateTime и можете ли вы установить для этих столбцов / свойств значение «Никогда» для проверки параллелизма.

1 голос
/ 24 июля 2011

Мне кажется, что строка, которую вы пытаетесь обновить, устарела (текущая строка в базе данных не соответствует той строке, которую вы получили из базы данных). значение по умолчанию для Conflictmode failMode - вызывать исключение в случае конфликта. См. эту страницу MSDN .

Вам следует выяснить, почему в этих строках появляются устаревшие данные. Это изменилось кем-то или кем-то еще. Вы кешируете данные? Вы работаете в веб-ферме? .... Я думаю, что эта страница описывает, как с этим справиться.

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