Удалите все строки из таблицы с помощью функции Entity Framework, используя C# - PullRequest
0 голосов
/ 23 марта 2020

Я хочу удалить все строки из таблицы в моей SQL базе данных сервера (как вы можете видеть на скриншоте):

enter image description here

Для этого я использую следующую функцию:

private readonly DatabaseContext _context;

[HttpDelete]
public async Task DeleteInstances()
{
    _context.Alertings.RemoveRange();
    await _context.SaveChangesAsync();
}

И в DbContext у меня есть это:

public class DatabaseContext : DbContext
{
        public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
        {
        }

        public DbSet<AlertingDataModel> Alertings { get; set; }
}

И мой AlertingDataModel:

[Table("Alerting")]
public class AlertingDataModel
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Instance { get; set; }
    public string Serverity { get; set; }
    public string Summary { get; set; }
    public string State { get; set; }
    public string ActiveAt { get; set; }
}

Я провел исследования, я нашел этот метод

context.Database.ExecuteSqlCommand("TRUNCATE TABLE [TableName]");

Но я думаю, что это старый метод, я использую ASP. NET Core 3.1.1.

Если кто-то может помочь, я буду так благодарен:)

1 Ответ

4 голосов
/ 23 марта 2020

Raw SQL является предпочтительным способом выполнения массовых изменений, подобных этому. Но лучший способ сделать это в противном случае - извлечь все идентификаторы и создать экземпляры «Заглушка», заполнив только идентификаторы.

EG

var toDelete = db.Alerts.Select(a => new Alert { Id = a.Id }).ToList();
db.Alerts.RemoveRange(toDelete);
db.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...