Украшение [ConcurrencyCheck] не работает? - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь реализовать Optimisti c Проверка параллелизма в основном проекте. Я отображаю запись, которую нужно отредактировать, изменяю данные во внутреннем интерфейсе (Sql Server Management Studio), сохраняю данные с веб-страницы, но исключение параллелизма не возникает, несмотря на то, что украшение находится в каждом отдельном поле в модели (кроме ключ).

Я читал эту статью:

https://entityframeworkcore.com/knowledge-base/47392764/ef-core-dbupdateconcurrencyexception-does-not-work-as-expected

, которая объясняет, что украшение '[ConcurrencyCheck]' абсолютно ничего не делает ! По-видимому, рекомендуется встраивать дубликаты, не отображенные поля в модель, если мы используем контекстные вызовы EF .Update и .SaveChanges (кажется, что параллельное сравнение происходит, когда .Update возвращает версию данных, которую пользователь никогда не видел для сравнения).

В этой статье:

https://docs.microsoft.com/en-us/ef/core/saving/concurrency

есть пример использования Raw SQL.

Теперь я в порядке, используя RowVersion. Я мог бы использовать его первым, если бы в документацию [ConcurrencyCheck] входило выражение «Работает только с Raw Sql» .

Я неправильно читаю?

1 Ответ

0 голосов
/ 06 февраля 2020

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

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