Запрос EF Core DbSet.Local slow - PullRequest
       4

Запрос EF Core DbSet.Local slow

0 голосов
/ 21 декабря 2018

Я с большим успехом прошу 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;");
        }
    }

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Это было решено в следующей версии EF Core 3.0

https://github.com/aspnet/EntityFrameworkCore/issues/14231

0 голосов
/ 24 апреля 2019

Это может помочь здесь

проверить BlogContext модель, EF Core еще не поддерживает многие вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...