Performance 查询EF Core DbSet.Local slow

Performance 查询EF Core DbSet.Local slow,performance,entity-framework-core,Performance,Entity Framework Core,多年来,我一直对EF 6 DbSet.Local非常感兴趣,并取得了巨大的成功。然而,在EF Core中做同样的事情要慢6倍,不幸的是,这对我来说是一个阻碍,因为我正在处理大量的数据,这再次阻止我从EF 6转换到EF Core 请帮我解决这个问题 下面请找到一个可以在EF 6中运行的示例。和EF核心 private BlogContext\u BlogContext; 公共测试() { _logger.Information(“BlogTest已启动”); _blogContext=新的blo

多年来,我一直对EF 6 DbSet.Local非常感兴趣,并取得了巨大的成功。然而,在EF Core中做同样的事情要慢6倍,不幸的是,这对我来说是一个阻碍,因为我正在处理大量的数据,这再次阻止我从EF 6转换到EF Core

请帮我解决这个问题

下面请找到一个可以在EF 6中运行的示例。和EF核心


private BlogContext\u BlogContext;
公共测试()
{
_logger.Information(“BlogTest已启动”);
_blogContext=新的blogContext();
_blogContext.ChangeTracker.AutoDetectChangesEnabled=false;//EF Core
//_blogContext.Configuration.AutoDetectChangesEnabled=false;//EF 6
//将博客添加到上下文中
对于(int i=0;i<10000;i++)
{
_blogContext.Blogs.Add(新Blog{ID=i});
}
_记录器信息(“博客测试继续”);
//在上下文中循环博客
对于(int i=1;i<100000;i++)
{
foreach(var blog在_blogContext.Blogs.Local中)
{
}
}
_记录器信息(“博客测试结束”);
}
公共类博客
{
公共int ID{get;set;}
}
公共类BlogContext:DbContext
{
公共数据库集博客{get;set;}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
optionsBuilder.UseSqlServer(“服务器=(localdb)\\mssqllocaldb;数据库=博客;受信任的连接=真;MultipleActiveResultSets=真;”;
}
}
这可能会有所帮助


检查
BlogContext
模型,EF Core还不支持很多东西。

这已经在即将推出的EF Core 3.0中得到了解决


请不要将链接作为答案发布。如果链接断开了,答案就没用了。始终添加简短的摘要。
    private BlogContext _blogContext;

    public void BlogTest()
    {
        _logger.Information("BlogTest started");

        _blogContext = new BlogContext();
        _blogContext.ChangeTracker.AutoDetectChangesEnabled = false; // EF Core
        //_blogContext.Configuration.AutoDetectChangesEnabled = false; // EF 6

        // Add blogs to context
        for (int i = 0; i < 10000; i++)
        {
            _blogContext.Blogs.Add(new Blog { ID = i });
        }

        _logger.Information("BlogTest continued");

        // Loop blogs in context
        for (int i = 1; i < 100000; i++)
        {
            foreach (var blog in _blogContext.Blogs.Local)
            {
            }
        }

        _logger.Information("BlogTest ended");
    }

    public class Blog
    {
        public int ID { get; set; }
    }

    public class BlogContext: DbContext
    {
        public DbSet<Blog> Blogs { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Blog;Trusted_Connection=True;MultipleActiveResultSets=True;");
        }
    }