You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework如何通过主键删除记录(无需预加载数据)

通过主键直接删除数据库记录的优化方案

当然可以,现在主流的ORM(比如Entity Framework Core)已经提供了多种无需先加载实体就能通过主键删除记录的方案,完全避免查询开销:

方案1:Attach空实体后删除(兼容多数EF版本)

这种方法不需要查询数据库,仅构造一个包含主键的实体实例,通过Attach将其纳入上下文管理,再执行删除操作:

using (var context = new MyDbContext())
{
    var entity = new MyEntity { Id = id };
    context.MyEntity.Attach(entity);
    context.MyEntity.Remove(entity);
    context.SaveChanges();
}

执行时EF会直接生成DELETE FROM MyEntity WHERE Id = @id的SQL语句,不会先查询实体。

方案2:使用EF Core 3.0+的ExecuteDelete(推荐)

EF Core 3.0及以上版本新增了ExecuteDelete方法,支持直接基于LINQ查询执行删除,完全跳过实体加载步骤,是性能最优的方案:

using (var context = new MyDbContext())
{
    context.MyEntity.Where(e => e.Id == id).ExecuteDelete();
}

这个方法直接将LINQ查询转换为对应的DELETE SQL,无需构造实体实例,代码更简洁高效。

如果使用的是较老的Entity Framework 6,方案1依然是可靠的选择;若使用EF Core 3.0+,优先选择方案2。

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:57:05