c# - 使用 C# 从具有实体框架函数的表中删除所有行
问题描述
我想从我的 SQL Server 数据库中的表中删除所有行(如您在屏幕截图中所见):
为此,我正在使用以下功能:
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。
如果有人可以帮助我将非常感激:)
解决方案
原始 SQL 是执行此类批量更改的首选方法。但最好的方法是获取所有 ID 并构造“存根实体”实例,其中仅填充 ID。
例如
var toDelete = db.Alerts.Select(a => new Alert { Id = a.Id }).ToList();
db.Alerts.RemoveRange(toDelete);
db.SaveChanges();
推荐阅读
- tensorflow - 对象检测训练未开始
- python - ValueError:使用序列设置数组元素,通过迭代更改向量的数据
- javascript - 上传图片,然后调整大小
- c++ - 在 Windows 10 中,如何翻译托盘通知气球的页脚?
- xamarin - 带有 Xamarin 和 MVVMCross 6 的 iOS 应用程序的 Master-Details-Page (SplitView)
- c# - 是否可以为 dotnet core 运行时安装 DotNet core CLI?
- unix - 如何在 unix 上不输入数百万次密码?
- html - MDBootstrap Angular Material Animation 不适用于输入字段
- php - Wordpress & MDPF 包含外部 php 文件模板
- c++ - 是否可以通过使用其他变量来为变量分配值而不更改它们在 C++ 中的值。?