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

EF中如何在DbContext上直接使用Find与Find<T>方法?

解答

可行性结论

完全可行。DbContext层面的Find系列方法和你常用的DbSet.Find()底层逻辑完全一致,都会优先查询上下文本地的跟踪缓存,缓存未命中时才会访问数据库,最终返回结果、执行性能没有任何差异。

具体使用方式

假设你要查询主键为1的User实体,两种调用方式如下:

  • 泛型版本(日常开发最常用)
// 直接通过DbContext调用
var user = ctx.Find<User>(1);

// 等价于你熟悉的DbSet调用方式
var user = ctx.Users.Find(1);
  • 非泛型版本(仅用于实体类型需要动态确定的场景)
// 第一个参数传入实体类型,返回值需要自行强转
var user = (User)ctx.Find(typeof(User), 1);

补充说明

大家平时习惯用DbSet调用Find,只是因为不需要显式写泛型参数,写法更简洁,没有其他特殊原因。


内容的提问来源于stack exchange,提问作者Konrad Viltersten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:45:04