powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ef core update вместо delete
25 сообщений из 42, страница 1 из 2
ef core update вместо delete
    #39639859
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
EF Core. Возникло требование не удалять строки в базе а помечать как удаленные. Подскажите пожалуйста - есть ли способ сделать это как то автоматом, не засоряя модели признаком isDeleted и чтоб работало каскадное удаление (то есть каскадное выставление признака isDeleted )
Спасибо
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639881
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimirzzzне засоряя модели признаком isDeletedVladimirzzzкаскадное выставление признака isDeletedя один ничего не понял?
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639905
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Я только залез в ef поэтому может не очень точно выражаюсь. Я так понимаю что могу получить нужный функционал добавив в модель property 'isDeleted' ну или что нибудь в этом роде и потом пользуясь только update ручками проставлять его у дочерних сущностей, при выборках не учитывать записи с isDeleted = true и.т.д. Но хочется сразу для всех сущностей подменить поведение что бы вместо удаления из базы была пометка записи как удаленной.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639942
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimirzzzдобавив в модель property 'isDeleted'не надо.
Он сам это делает.
Если вы о псевдоудалении то забудьте.
Переносите сущности в архив, но не делайте флаги "Как бы удалено"
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639963
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Хранить удаленные записи - это требование заказчика ( как и подробное логирование изменений сущностей и пессимистичная блокировка и модерация изменений :) )
А какие минусы у псевдоудаленных записей кроме разбухания таблицы ?

С архивом - дублировать все таблицы ? Или всю базу? Сразу возникает вопрос контроля куда ведут связи из архивной таблицы - в основную из актуальных таблиц или уже в архивную ?
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639965
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делайте статусы в таблицах и меняйте их при "удалении" записей, это всё решается в вашем случаем бизнес логикой
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639972
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirzzzДобрый день.
EF Core. Возникло требование не удалять строки в базе а помечать как удаленные. Подскажите пожалуйста - есть ли способ сделать это как то автоматом, не засоряя модели признаком isDeleted и чтоб работало каскадное удаление (то есть каскадное выставление признака isDeleted )
Спасибо
Vladimirzzz, Руками: How to make soft delete in cascade with Entity Framework Core including navigation properties?
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639975
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimirzzz, ну и про глобальные фильтры почитайте... вроде здесь все вместе
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639978
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,
Ну да с isDeleted это и есть этот вариант. Но мне кажется что этим не нужно бы засорять бизнес логику так как удалять или помечать- это зависит от реализации хранилища, то есть относится к DAL и жить должно там.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639983
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirzzzKonst_One,
Ну да с isDeleted это и есть этот вариант. Но мне кажется что этим не нужно бы засорять бизнес логику так как удалять или помечать- это зависит от реализации хранилища, то есть относится к DAL и жить должно там.
Ну так и читайте про патерне матерны... если хотите "чистоты"... репозитории поки дто с автомапперами...
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639985
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirzzzХранить удаленные записи - это требование заказчика (он же не сказал каким методом.
Он слово запись не употреблял?
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639987
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirzzzА какие минусы у псевдоудаленных записей кроме разбухания таблицы ?а как один ко многим будет работать?
Когда в цикле по записям мастера пойдут запросы ленивые к чилдренам?
А там из 100 детишек только 2 реальных.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639990
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirzzzС архивом - дублировать все таблицы ? Или всю базу? Сразу возникает вопрос контроля куда ведут связи из архивной таблицы - в основную из актуальных таблиц или уже в архивную ?
Как вариант базы OLAP / OLTP
Т.е. Закрыть опер день означает переместить накладные в другю базу или таблу.
Денормализовав.
Там целая ветка форума есть.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639994
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buserНу так и читайте про патерне матерны... если хотите "чистоты"... репозитории поки дто с автомапперами...
Нууу ... почти во всем хороша умеренность :)
Спасибо - ссылки как раз то что нужно.
Меня в гугле не забанили - я просто не сообразил что это "soft delete" :)
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639995
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimirzzz, и таки да... возможно есть поддержка на уровне движка вашей субд... как пример - Temporal Tables в ms sql
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639996
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneделайте статусы в таблицах и меняйте их при "удалении" записей, это всё решается в вашем случаем бизнес логикой
Тут ef. Он сам не удаляет.
Код: c#
1.
Контекст.Должники.Del(person)
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39639999
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за советы.

Вот может еще кому пригодится http://dotnetfalcon.com/entity-framework-logical-delete-part-one-intro-and-questions/
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640000
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Konst_Oneделайте статусы в таблицах и меняйте их при "удалении" записей, это всё решается в вашем случаем бизнес логикой
Тут ef. Он сам не удаляет.
Код: c#
1.
Контекст.Должники.Del(person)



ну и что, можно и апдейт сделать колонки статуса и выборку без статуса удалён и тд и тп
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640010
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,
Все можно. Но код будет адовый. Миграция адовая и FK работать не будет т.к. мастер вроде бы удален, а чилдрены нет.
В общем надо смотреть что выираем.
Если думаем что я могу вернуть сущность удаленную месяц назад, то нет. Чревато. У сущности куча связей.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640017
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Konst_One,
Все можно. Но код будет адовый. Миграция адовая и FK работать не будет т.к. мастер вроде бы удален, а чилдрены нет.
В общем надо смотреть что выираем.
Если думаем что я могу вернуть сущность удаленную месяц назад, то нет. Чревато. У сущности куча связей.

видно мы о разном:

Код: c#
1.
var active = db.MasterTable.Include("Children").where(x => x.Status != "deleted").ToList();
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640049
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,
ToList убери и пройдись циклом.
foreach ........
Чилдрены будут автоматом грузится все 100 штук или только актуальные?
2. Каскад будет работать?
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640050
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
Код: c#
1.
Include

и это убери.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640054
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,
У сущности Юзер есть машины, дети и долги.
У долгов тоже есть каскад и FK.
Как удалить юзверя со всем барахлом по каскаду?
Как обеспечить проверку FK при псевдоудалении?
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640055
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Konst_One
Код: c#
1.
Include


и это убери.

проехали, мы о разном ...
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640058
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Konst_One,
У сущности Юзер есть машины, дети и долги.
У долгов тоже есть каскад и FK.
Как удалить юзверя со всем барахлом по каскаду?
Как обеспечить проверку FK при псевдоудалении?

не нужно ТСу физически удалять, ему нужно , чтобы физически эти данные в таблице оставались, я привёл пример , как это реализуется в бизнес-логике.

ps
tolist include etc тут не при чём, я про суть , что можно это решить через колонку статуса
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ef core update вместо delete
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]