ChangeConflictException в Linq к обновлению Sql

Простой способ - Project> Управление пакетами NuGet ...> Обзор (вкладка)> в исходном запросе установите это: Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Вы можете установить или обновить или удалить и установить это компилятор

15
задан Michael Nero 19 March 2009 в 20:15
поделиться

2 ответа

Я наконец понял, что с этим происходит. Очевидно, для этого сервера была включена опция «без подсчета».

В Microsoft SQL Server Management Studio 2005:

  1. Щелкните правой кнопкой мыши на сервере и выберите Свойства
  2. С левой стороны от сервера. В окне свойств выберите страницу Соединения
  3. В разделе Параметры подключения по умолчанию убедитесь, что «без подсчета» не выбрано.

По-видимому, LINQ to SQL использует @@ ROWCOUNT после обновлений для выпуска автоматического оптимистического проверка параллелизма Конечно, если «no count» включено для всего сервера, @@ ROWCOUNT всегда возвращает ноль, а LINQ to SQL генерирует исключение ConcurrencyException после выпуска обновлений для базы данных.

Это не единственное поведение обновления LINQ to SQL использует. LINQ to SQL не работает

28
ответ дан 1 December 2019 в 02:10
поделиться

Действительно ли возможно, что какие-либо из данных для строки изменились между тем, когда это было получено, и обновление было предпринято? Поскольку LINQ-> SQL имеет автоматический параллелизм, проверяющий, что это проверит содержание объекта против в настоящее время хранивших значений (как Вы, посмотрите в сгенерированном запросе). Если возможно, что любое из полей изменилось для строки в DB по сравнению с объектным LINQ, отслеживает тогда обновление, перестанет работать. Если это происходит и на серьезном основании, и Вы знаете, какие поля, можно обновить объект в разработчике DBML; выберите поле в причине и измените свойство "Update Check" на "Никогда".

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

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