KorzhCom / EasyData

Adaptive CRUD for ASP.NET Core. With EasyData you can get both API endpoints and client-side UI for all CRUD operations in a matter of minutes using just your DbContext and a few lines of code.
MIT License
594 stars 63 forks source link

Некорректное сопоставление записей в результирующей выборке поиска #172

Closed Juggernauff closed 10 months ago

Juggernauff commented 10 months ago

Как воспроизвести ошибку:

  1. Найдите в поиске любую запись.
  2. Попробуйте её удалить/изменить.

С вероятностью 99.9% запись, которую вы хотите удалить/изменить определится неправильно (может определиться "правильно", если номер строки совпадет с её id).

Если же изменять/удалять запись не из результирующей выборки поиска, а из первоначальной результирующей выборки - всё будет работать корректно.

korzh commented 10 months ago

Доволі дивно адже механізм видалення вибирає запис не за його порядковим номером в таблиці, а за первинним ключем/ключами (primary keys).

Спробуємо повторити та виправити проблему але, нажаль, процес не буде швидким, адже основний час зараз займає робота по знищенню відомого терористичного угрупування, що вдерлося в мою країну.

З повагою, Сергій Корж, капітан ЗСУ.

korzh commented 10 months ago

Спробував повторити проблему з останньою версією 1.4.18 - не виходить. Все видаляється корректно. Можете розписати як повторити проблему на одному з sample проєктів, що додані до репозиторію?

Єдине що знайши, список записів чомусь не оновлюється автоматично після видалення (тобто ми продовжуємо бачити видалений запис). Але якщо зробити оновлення вручну - то все ОК.

Juggernauff commented 10 months ago

Велике спасибі за відповідь. Постараюся дати свою зворотний зв'язок на більш близькому вам мовою.

Для достовірності експерименту я видалив локальне сховище і використав git clone заново. За приклад беру проект Easy Data Basic Demo.MVC.Net6.

Мені варто було раніше подбати про це і прикласти скріни, але я зроблю це зараз.

Мої кроки:

  1. Перейшов на EasyData;
  2. Перейшов в Categories;
  3. Знайшов в пошуку запис під id: 8;
  4. Спробував її видалити (видно, що пропонує видалити запис під id: 1);
  5. Я отримую помилку;
  6. Намагаюся змінити;
  7. Перевіряти (змінено запис під id: 1).

Я буду радий, якщо допоможу покращити ваш проект. Перекладено через Yandex Translate.

step_1 step_2 step_3 step_4 step_5 step_6 step_7

korzh commented 10 months ago

Власне, то я намагався написати найбільш близькою до вас мовою. Бо репозиторій загалом та більшість з issues ведуться англійською.

Nevertheless.
Проблема була в самому демо проєкті. Ми там просто забули оновити версію EasyData скрипта до останньої (1.4.18). Я просто тестував цю проблему на інших проєктах і там вона, очевидно, не проявлялась. Після оновлення скрипта все працює нормально. Я вже залив останні зміни в репозиторій. Думаю можемо закривати цей issue.