多年来,我一直在EF 6 DbSet.Local上取得巨大成功。但是,在EF Core中执行相同操作的速度要慢6倍,对于我来说,不幸的是,这是我的首选,因为我要处理大量数据,这又使我无法从EF 6过渡到EF Core。
请帮助我解决此问题。
请在下面找到可以在EF 6和EF Core中运行的示例
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;");
}
}
答案 0 :(得分:0)
这可能是帮助here
检查BlogContext
模型,EF Core还不支持很多功能。
答案 1 :(得分:0)
此问题已在即将发布的EF Core 3.0中解决