powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ef core update вместо delete
17 сообщений из 42, страница 2 из 2
ef core update вместо delete
    #39640059
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneпроехали, мы о разном ...
Ок.
Я за то чтобы в бизнес требованиях ставить галку Удален или Актуален или Уволен.
Но не а все подряд таблицы.
Ты наверно про это.
Удачи!
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640085
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirzzzДобрый день.
EF Core. Возникло требование не удалять строки в базе а помечать как удаленные. Подскажите пожалуйста - есть ли способ сделать это как то автоматом, не засоряя модели признаком isDeleted и чтоб работало каскадное удаление (то есть каскадное выставление признака isDeleted )
Спасибо

НЕТ. нельзя. точнее, попытайся что-то изобразить и на простетских примерах что-то да получится, но граблей столько, что не оберёшься.

IsDeleted натуральное зло, тупейший костыль, которым грешат нубасы.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640100
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttIsDeleted натуральное зло, тупейший костыль, которым грешат нубасы.+1
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640105
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttVladimirzzzДобрый день.
EF Core. Возникло требование не удалять строки в базе а помечать как удаленные. Подскажите пожалуйста - есть ли способ сделать это как то автоматом, не засоряя модели признаком isDeleted и чтоб работало каскадное удаление (то есть каскадное выставление признака isDeleted )
Спасибо

НЕТ. нельзя. точнее, попытайся что-то изобразить и на простетских примерах что-то да получится, но граблей столько, что не оберёшься.

IsDeleted натуральное зло, тупейший костыль, которым грешат нубасы.
Правильно! Надо IsActive
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640119
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПравильно! Надо IsActive

Шутка не удалась )
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640137
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще этому решению сто лет в обед.
Как-то тётя Маша случайно удалила записи об отгрузке нефти на кругленькую сумму денег и тут же возникло требование ни фига из базы физически не удалять.
Требование было реализовано.

Понятно, что с того времени появились лучшие варианты не потерять важные данные.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640359
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВообще этому решению сто лет в обед.
Как-то тётя Маша случайно удалила записи об отгрузке нефти на кругленькую сумму денег и тут же возникло требование ни фига из базы физически не удалять.

«Ничего физически не удалять» и так называемый флаг «удаления», который можно встретить в овер 80% системах, это не одно и то же :)

skyANAТребование было реализовано.

Это понятно. Но как и многие плохие привычки, исходят из какой-то разовой необходимости, потом остаются надолго и кочуют из проекта в проект, просто бездумно.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640382
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttIsDeleted натуральное зло, тупейший костыль, которым грешат нубасы.

а что не зло? как делают не нубасы?
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640388
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach,
Вроде весь топик в ответах)
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640393
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachhVosttIsDeleted натуральное зло, тупейший костыль, которым грешат нубасы.

а что не зло? как делают не нубасы?

Операция «Удаление» это удаление, оно должно приводить к удалению данных из системы. Что должен понять сотрудник глядя на запись с IsDeleted == true? Это что вообще значит? Случайно создали кривую запись и грохнули? Объект выведен из эксплуатации? Ошибка тёти Маши? Как это вообще отвечает целостности, за которую так божатся, выбирая SQL? Если записи нет, на неё сослаться нельзя, буквально физически, сервер не даст с констрейтами.

Ещё момент. Наивная уверенность в сохранности данных. Типа, если случайно что-то там грохнули, не беда это восстановить, просто вернув флаг. Но это не так. Нельзя вернуть никакую запись, которая участвует в формировании балансов, сумм, лимитов и прочего. Любая бизнес-система инкрементальная, каждая операция меняет её состояния, каждая операция основывается на состоянии. Если что-то просто «вернуть к жизни», значит все операции, которые были совершены после «удаления» нельзя считать корректными.

Потом. Писать запросы с учётом IsDeleted, строить отчёты, проводить какую-то аналитику, становится дорогим и затратным делом. Всё равно, что лазить в холодильник и выбирать какая колбаса свежая, из всего мусора, который там навален. И наклеечки «пропало» не улучшают ситуацию.

Но всё равно так делают. Много и часто. И не от большого ума, скорее прикрыть точку, ну и от бездарности и лени (не той, что делает разработчика профессионалом, а другой консистенции).
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640399
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttlove_bachпропущено...


а что не зло? как делают не нубасы?

Операция «Удаление» это удаление, оно должно приводить к удалению данных из системы. Что должен понять сотрудник глядя на запись с IsDeleted == true? Это что вообще значит? Случайно создали кривую запись и грохнули? Объект выведен из эксплуатации? Ошибка тёти Маши? Как это вообще отвечает целостности, за которую так божатся, выбирая SQL? Если записи нет, на неё сослаться нельзя, буквально физически, сервер не даст с констрейтами.

Ещё момент. Наивная уверенность в сохранности данных. Типа, если случайно что-то там грохнули, не беда это восстановить, просто вернув флаг. Но это не так. Нельзя вернуть никакую запись, которая участвует в формировании балансов, сумм, лимитов и прочего. Любая бизнес-система инкрементальная, каждая операция меняет её состояния, каждая операция основывается на состоянии. Если что-то просто «вернуть к жизни», значит все операции, которые были совершены после «удаления» нельзя считать корректными.

Потом. Писать запросы с учётом IsDeleted, строить отчёты, проводить какую-то аналитику, становится дорогим и затратным делом. Всё равно, что лазить в холодильник и выбирать какая колбаса свежая, из всего мусора, который там навален. И наклеечки «пропало» не улучшают ситуацию.

Но всё равно так делают. Много и часто. И не от большого ума, скорее прикрыть точку, ну и от бездарности и лени (не той, что делает разработчика профессионалом, а другой консистенции).

аргументировано. но это ответ на вопрос "почему это зло". я же хотел ответ на вопрос "как делать добро", ведь это действительно частое требование заказчика.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640400
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachhVosttпропущено...


Операция «Удаление» это удаление, оно должно приводить к удалению данных из системы. Что должен понять сотрудник глядя на запись с IsDeleted == true? Это что вообще значит? Случайно создали кривую запись и грохнули? Объект выведен из эксплуатации? Ошибка тёти Маши? Как это вообще отвечает целостности, за которую так божатся, выбирая SQL? Если записи нет, на неё сослаться нельзя, буквально физически, сервер не даст с констрейтами.

Ещё момент. Наивная уверенность в сохранности данных. Типа, если случайно что-то там грохнули, не беда это восстановить, просто вернув флаг. Но это не так. Нельзя вернуть никакую запись, которая участвует в формировании балансов, сумм, лимитов и прочего. Любая бизнес-система инкрементальная, каждая операция меняет её состояния, каждая операция основывается на состоянии. Если что-то просто «вернуть к жизни», значит все операции, которые были совершены после «удаления» нельзя считать корректными.

Потом. Писать запросы с учётом IsDeleted, строить отчёты, проводить какую-то аналитику, становится дорогим и затратным делом. Всё равно, что лазить в холодильник и выбирать какая колбаса свежая, из всего мусора, который там навален. И наклеечки «пропало» не улучшают ситуацию.

Но всё равно так делают. Много и часто. И не от большого ума, скорее прикрыть точку, ну и от бездарности и лени (не той, что делает разработчика профессионалом, а другой консистенции).

аргументировано. но это ответ на вопрос "почему это зло". я же хотел ответ на вопрос "как делать добро", ведь это действительно частое требование заказчика.

я, например, пришел к выводу, что такие "IsDeleted" - это фактически требование наличия лога, отличного от основной структуры БД
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640403
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachаргументировано. но это ответ на вопрос "почему это зло". я же хотел ответ на вопрос "как делать добро", ведь это действительно частое требование заказчика.

1. данные и правда надо хранить, по умолчанию, но не вместе с актуальными живыми данными
2. у любого объекта в информационной системе есть свой жизненный цикл, и вряд ли он заканчивается удалением, ну мне лично тяжело найти такой пример, если это не лог какой-нибудь, это может быть статус, рейндж дат начала/окончания или просто факт остаётся фактом навсегда
3. восстановление данных по сути это добавление заново со всеми вытекающими, или это переписывание истории, в маленьких системах (каких-нибудь АРМ-ах), можно и тупо восстанавливать меняя флаг, но в целом, это не верный подход, и такое умение не имеет ценности на перспективу, надо учиться делать правильно
4. вариантов как делать добро много, зависит от задач, технологий, методик, архитектуры и т.д.

основной принцип: никогда не храни актуальный живые данные со всяким мусором. куда ты будешь его складывать и как хранить, дело десятое.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640405
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachя, например, пришел к выводу, что такие "IsDeleted" - это фактически требование наличия лога, отличного от основной структуры БД

лог это немного другое. обычно лог для разбирательств. а IsDeleted для разбирательств, как пятая нога.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39640430
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachже хотел ответ на вопрос "как делать добро", ведь это действительно частое требование заказчика.не думайте вместе с заказчиком в терминах Запись.
Вот и все.
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39641962
Vladimirzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Может я ошибаюсь, но когда то кажется dbase жил на таких isDelete.
А еще есть ситуация когда со стороны заказчика выступает технический специалист который говорит "Хочу от такую структуру данных потому как формочкам этим вашим я не доверяю, а буду руками чо надо редактировать". И тут спор плавно перетекает в тему а стоит ли оно того, за какой проект браться и в каких условиях и.т.д. :)
...
Рейтинг: 0 / 0
ef core update вместо delete
    #39641964
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirzzzМожет я ошибаюсь, но когда то кажется dbase жил на таких isDelete.
Жил. В DBF структура линейная, типа классического массива, как следствие невозможно удалить запись из середины без сдвига всего массива, что дорого, поэтому придумали пометку на удаление вместо полноценного удаления.
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ef core update вместо delete
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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