LinqDataSource генерирует исключение ChangeConflictException по неизвестной причине - PullRequest
2 голосов
/ 11 марта 2011

У меня сейчас странная проблема со старым проектом.Проект использует FormView для редактирования данных.FormView привязан к LinqDataSource.После обновления отредактированного объекта я получаю исключение

System.Data.Linq.ChangeConflictException  - Row not found or change

.Я уже некоторое время гуглю, и посты, которые я прочитал, говорят мне, что это проблема параллелизма.Я бы согласился, если бы кто-то действительно обновил данные за это время, но никто этого не делает.

Вот так выглядит LinqDataSource:

<asp:LinqDataSource ID="ldsFirma" runat="server" ContextTypeName="mynamespace.myDataContext" 
    EnableUpdate="True" TableName="Firmendatens" Where="Kennummer == @Kennummer"
    OnSelecting="ldsFirma_Selecting" StoreOriginalValuesInViewState="False" OnUpdating="ldsFirma_Updating">
    <WhereParameters>
        <asp:Parameter Name="Kennummer" Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>

Это открывающий тегFormView:

<asp:FormView ID="fvFirma" runat="server" DataKeyNames="Kennummer" DataSourceID="ldsFirma" ...

Обновление вызывается с помощью кнопки ImageButton:

Что можно сделать, чтобы исправить это.Кажется, что не каждый ряд затронут этим.Я изменил значение подряд несколько часов назад с помощью другого веб-приложения.С тех пор я перестраивал и очищал веб-приложение, с которым у меня в настоящее время возникают проблемы несколько раз, но это ничего не меняет.

На самом деле я ищу свойство "DisableConcurrency", которое я могу установитьк ложному, но, к сожалению, LDS не предоставляет такую ​​вещь.

Есть предложения?

1 Ответ

1 голос
/ 11 марта 2011

Хорошо, я нашел работоспособное решение.Кажется, невозможно установить «DisableConcurrency» на LDS.Но я могу изменить определение таблицы LinqToSql.Я изменил свойство проверки обновлений каждого столбца в таблице «firmendatens» на «Никогда»

...