У меня есть таблица SQL Server в Entity Framework, названная employ
с одним ключевым столбцом ID
.
Как удалить одну запись из таблицы, используя Entity Framework?
c#
sql-server
entity-framework
user2497476
источник
источник
Ответы:
Нет необходимости сначала запрашивать объект, вы можете присоединить его к контексту по его идентификатору. Как это:
В качестве альтернативы, вы можете установить состояние прикрепленной записи как удаленное:
источник
ctx.Entry(employer).State = EntityState.Deleted
Вы можете использовать,
SingleOrDefault
чтобы получить один объект, соответствующий вашим критериям, а затем передать его вRemove
метод вашей таблицы EF.источник
источник
FirstOrDefault
опасный. Либо вы знаете, что есть только один (так что используйтеSingleOrDefault
), либо их больше одного, и это должно быть сделано в цикле.источник
First
опасный. Либо вы знаете, что есть только один (так что используйтеSingle
), либо их больше одного, и это должно быть сделано в цикле.Я использую Entity Framework с LINQ. Следующий код был полезен для меня;
1- Для нескольких записей
2- Для одиночной записи
источник
SingleOrDefault
вместоFirstOrDefault
?Более общий подход
источник
С Entity Framework 6 вы можете использовать
Remove
. Также это хорошая тактикаusing
для уверенности в том, что ваше соединение закрыто.источник
Просто хотел внести три метода, с которыми я отскочил назад и вперед.
Способ 1:
Способ 2:
Одна из причин, по которой я предпочитаю использовать метод 2, заключается в том, что в случае установки EF или EFCore
QueryTrackingBehavior.NoTracking
это безопаснее.Тогда есть метод 3:
Это использует подход мягкого удаления, устанавливая
DeletedOn
свойство записи и сохраняя возможность сохранять запись для будущего использования, что бы это ни было. В основном, положить его в корзину .Кроме того, что касается метода 3 , вместо установки всей записи для изменения:
Вы также можете просто установить только
DeletedOn
измененный столбец :источник
Что вы думаете об этом, просто или нет, вы также можете попробовать это:
источник
Использование EntityFramework.Plus может быть вариантом:
Больше примеров доступно здесь
источник
ты можешь сделать это просто так
модель
вид из которого ты будешь называть это
я надеюсь, вам будет легко это понять
источник
Вы можете сделать что-то подобное в своем событии click или celldoubleclick вашей сетки (если вы его использовали)
Затем сделайте что-то вроде этого в вашей кнопке удаления:
В качестве альтернативы вы можете использовать LINQ Query вместо LINQ To Entities Query:
employee.Id используется в качестве параметра фильтрации, который уже был передан из события CellDoubleClick вашего DataGridView.
источник
Вот безопасный способ:
Здесь вы можете накапливать все необходимые изменения, поэтому вы можете выполнить серию удалений перед сохранением изменений и фиксацией, поэтому они будут применены только в том случае, если все они будут успешными.
источник
Лучший способ - это проверить, а затем удалить
источник
Для общего DAO это сработало:
источник