Существует несколько способов выполнить удаление в Entity Framework. Необходимо принять во внимание, какие значения вы хотите удалить?одна строка или больше.когда вам нужно удалить строку из таблицы, мы можем использовать следующие способы:
// first way
using (WeightScaleEntities db = new WeightScaleEntities())
{
var deleteUserActivities = from details in db.User_Activity
where details.Id == i_UserActivityId
select details;
if (deleteUserActivities.Count() > 0)
{
db.deleteUserActivities.Remove(deleteUserActivities.First());
db.SaveChanges();
}
}
эта строка deleteUserActivities.Count()>0
, чтобы проверить, есть ли у вас результат в запросе или нет.и это deleteUserActivities.First()
, если запрос возвращает множество строк, удаляет первый.«чтобы сделать процесс более безопасным, если вы не знаете о данных в таблице»
// second way
using (WeightScaleEntities db = new WeightScaleEntities())
{
var deleteUserActivities = (from details in db.User_Activity
where details.Id == i_UserActivityId
select details).SingleOrDefault();
if (deleteUserActivities != null)
{
db.User_Activity.Remove(deleteUserActivities);
// or use this line
//db.Entry(deleteUserActivities).State = System.Data.Entity.EntityState.Deleted;
db.SaveChanges();
}
}
Вы также можете использовать Single или SingleOrDefault, чтобы получить один объект.Single или SingleOrDefault сгенерирует исключение, если результат содержит более одного элемента.Используйте Single или SingleOrDefault, если вы уверены, что результат будет содержать только один элемент.Если в результате есть несколько элементов, то должны возникнуть некоторые проблемы.
Кроме того, если вам нужно удалить одну или несколько строк, используйте этот способ:
using (WeightScaleEntities db = new WeightScaleEntities())
{
var deleteUserActivities = (from details in db.User_Activity
where details.Id == i_UserActivityId
select details).ToList<User_Activity>(); //<User_Activity> her name of your DbSet
foreach(deleteObject in deleteUserActivities)
{
db.Entry(deleteObject).State = System.Data.Entity.EntityState.Deleted;
}
db.SaveChanges();
}
С наилучшими пожеланиями и извините за английский язык.