我如何才能快速删除使用实体框架表中的所有行?
我目前使用:
var rows = from o in dataDb.Table
select o;
foreach (var row in rows)
{
dataDb.Table.Remove(row);
}
dataDb.SaveChanges();
但是,执行起来需要很长时间。
还有其他选择吗?
我如何才能快速删除使用实体框架表中的所有行?
我目前使用:
var rows = from o in dataDb.Table
select o;
foreach (var row in rows)
{
dataDb.Table.Remove(row);
}
dataDb.SaveChanges();
但是,执行起来需要很长时间。
还有其他选择吗?
当前回答
这对我很有用……EF v3.1.5
context.ModelName.RemoveRange(context.ModelName.ToList());
context.SaveChanges();
其他回答
var data = (from n in db.users select n);
db.users.RemoveRange(data);
db.SaveChanges();
Ef Core 3.1及以上
_context.Database.ExecuteSqlRaw($"TRUNCATE TABLE
{_context.Warehouse.EntityType.GetSchema()}.
{_context.Warehouse.EntityType.GetTableName()}");
仓库是dbSet
删除所有记录。不要像“truncate”那样重置主索引。
/// <summary>
/// SET - DELETE all record by table - no truncate - return deleted records
/// </summary>
public static int setListDelAllMYTABLE()
{
// INIT
int retObj = 0;
using (MYDBEntities ctx = new MYDBEntities())
{
// GET - all record
var tempAllRecord = ctx.MYTABLE.ToList();
// RESET
ctx.MYTABLE.RemoveRange(tempAllRecord);
// SET - final save
retObj += ctx.SaveChanges();
}
// RET
return retObj;
}
var all = from c in dataDb.Table select c;
dataDb.Table.RemoveRange(all);
dataDb.SaveChanges();
没有Foreach你也能做到
dataDB.Table.RemoveRange(dataDB.Table);
dataDB.SaveChanges();
这将删除所有行