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

Linq/Entity Framework中检查记录存在并查询的更简洁实现方式

优化EF Core查询:单次获取存在的记录

你的代码目前会执行两次独立的数据库查询(一次Any,一次FirstOrDefault),完全可以简化为单次查询实现需求,有两种常用方案:

方案1:直接使用FirstOrDefault

直接调用FirstOrDefault并判断返回值是否为null,这会生成单次SQL查询,找到匹配记录就返回对象,找不到则返回null:

var myfoo = _context.Foo.FirstOrDefault(o => o.Id == id);
if (myfoo != null)
{
    // 处理找到的记录逻辑
}

方案2:针对主键使用Find方法

如果Id是实体的主键,推荐使用Find方法——它会优先检查DbContext的本地缓存,缓存中存在目标记录时直接返回,无需访问数据库;缓存中没有才会发起单次数据库查询:

var myfoo = _context.Foo.Find(id);
if (myfoo != null)
{
    // 处理找到的记录逻辑
}

这两种方案都能避免冗余的数据库请求,同时实现"找到记录则返回对象"的需求,代码更简洁高效。

内容的提问来源于stack exchange,提问作者Daniel Owen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:10:31