public static TEntity Delete <TEntity>(this EFDbContext context, long id) where TEntity : class { // Здесь мы можем указывать различные настройки контекста, // например выводить в отладчик сгенерированный SQL-код context.Database.Log = (s => System.Diagnostics.Debug.WriteLine(s)); TEntity item = context.Set <TEntity>().Find(id); if (item != null) { context.Entry <TEntity>(item).State = EntityState.Deleted; } return(item); }
public static void Delete <TEntity>(this EFDbContext context, IEnumerable <long> entities) where TEntity : class { // Отключаем отслеживание и проверку изменений для оптимизации вставки множества полей context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; context.Database.Log = (s => System.Diagnostics.Debug.WriteLine(s)); foreach (int id in entities) { TEntity item = context.Set <TEntity>().Find(id); if (item != null) { context.Entry <TEntity>(item).State = EntityState.Deleted; } } context.Configuration.AutoDetectChangesEnabled = true; context.Configuration.ValidateOnSaveEnabled = true; }