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

如何实现通用DbSet.Find()查询,适配多同接口实体的GetById方法

解决方案

你调用的Db.Find(Type, params object[])重载返回值为object类型,未做类型转换直接返回会触发类型不匹配错误,以下是两种正确实现方案:

方案1:对返回结果做显式类型转换

public T GetById<T>(int id) where T : class, IMeetingEntityBaseClass
{
    return (T)db.Find(typeof(T), id);
}

方案2(更推荐):通过泛型DbSet调用Find方法

通过Set<T>()直接获取对应实体的泛型数据集,调用泛型版本的Find方法天然返回T类型,无需手动强转,类型安全性更高:

public T GetById<T>(int id) where T : class, IMeetingEntityBaseClass
{
    return db.Set<T>().Find(id);
}

注意:泛型约束中新增的class限制是EF Core对实体类型的强制要求,所有实体均为引用类型,增加该约束可避免编译错误。

内容的提问来源于stack exchange,提问作者Nyle Alliss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:03