Система. Данные. Linq. ChangeConflictException: Строка, не найденная или измененная

Вот одна строка для fedora или других дистрибутивов rpm (на основе подсказок @barraponto):

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'

Добавьте это к предыдущей команде, чтобы получить более чистый вывод:

 | sed -r 's:.*/(\w+)/__.*:\1:'
61
задан Null 27 July 2015 в 17:53
поделиться

5 ответов

Хорошо - похоже (в моем случае по крайней мере) ответ заключался в том, чтобы установить все свойство UpdateCheck столбца без первичного ключа на Never в файле DBML. Это сразу устранило проблему «Строка не найдена или не изменена».

Учитывая слухи, что Microsoft меняет Linq-To-Sql на моли в пользу Entity Framework, возникает вопрос, будут ли исправлены подобные ошибки?

69
ответ дан 24 November 2019 в 17:02
поделиться

I У меня такая же проблема, и я наткнулся на этот блог , в котором в основном говорится, что Linq-To-Sql имеет проблему в оптимистическом параллелизме, где:

  1. Используются высокоточные поля даты и времени. Решение состоит в том, чтобы установить для UpdateCheck значение никогда для этого столбца. Ваш файл DBML.
  2. Столбцы GridView, для которых задано невидимое значение, обращаются к свойству объекта данных (эта вторая причина не имеет смысла, но, похоже, это все в моде. блог).

Я еще не пробовал эти решения, но напишу здесь, как только найду.

15
ответ дан 24 November 2019 в 17:02
поделиться

В разделе:

QuestionModule o = query.First();

Вы должны добавить следующую команду:

db.QuestionModule.Attach(o);
0
ответ дан 24 November 2019 в 17:02
поделиться

Я смог решить эту проблему, выполнив databind() на gridview и datasource во время постбэка updatepanel.

    protected void UpdatePanel1_Load(object sender, EventArgs e)
    {
        GridView1.DataBind();
        LinqDataSource1.DataBind();
    }

Я обновлял updatepanel каждый раз, когда индекс выбора менялся, и это помогло разрешить конфликты.

Надеюсь, это поможет.

0
ответ дан 24 November 2019 в 17:02
поделиться

Ну, я не думаю, что «есть что-то гнилое в штате Редмонд!», по крайней мере, ваш сценарий не является доказательством этого. Но я действительно думаю , что это поведение - не ошибка, а скорее особенность. Почему? Только потому, что Perl regexes имеет то же поведение (я только что его проверил), и я считаю, что PCRE PHP (Perl Compatible Regular Expressions) ведут себя так же путь. И MS только что заставил свои методы Regex вести себя так же путь, как де-факто классические Perl. И теперь мой вопрос: «Что не так в царстве JS?»:)

-121--2639921-

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

Если вы выберете конкретный язык, это вполне возможно. Например, в C или C++ можно сделать что-то вроде: n = (n-1) + ((n-1) = 0) * max;

В случае, если вы заботитесь о том, как это работает: в C сравнение ( = = в данном случае) дает результат 0 для false, и 1 для true. Итак, мы добавляем max * 0 , когда/если n-1! = 0 , и max * 1 , когда/если n-1 = = 0 .

-121--4268333-

Убедитесь, что столбцы не содержат значений null в связанной таблице (т. е. в таблице, подлежащей обновлению).

1
ответ дан 24 November 2019 в 17:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: