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

EF6中调用CreateObjectSet报错:无定义或扩展方法,如何解决?

在EF6中替代CreateObjectSet的解决方案

EF6里DbContext不再直接提供CreateObjectSet方法,要实现相同功能,需要先获取底层的ObjectContext实例,再调用该方法。

修复后的代码示例

using System.Data.Entity;
using System.Data.Entity.Core.Objects;
using System.Data.Entity.Infrastructure;

using (var context_ = new MyEntities())
{
    // 将DbContext转换为IObjectContextAdapter,获取底层ObjectContext
    var objectContext = ((IObjectContextAdapter)context_).ObjectContext;
    ObjectSet<FieldHeader> query = objectContext.CreateObjectSet<FieldHeader>();
    replaceField(query, dsSet.Tables[0]);
}

额外说明

  • 如果replaceField方法可以兼容DbSet<T>类型,更推荐直接使用EF6的标准写法:
    DbSet<FieldHeader> query = context_.FieldHeaders;
    replaceField(query, dsSet.Tables[0]);
    
    注:FieldHeaders是MyEntities中对应FieldHeader实体的DbSet属性,通常为实体类名的复数形式。
  • 确保已引用System.Data.Entity.Core.Objects和System.Data.Entity.Infrastructure命名空间,避免类型找不到的错误。

内容的提问来源于stack exchange,提问作者Frank Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:43:10