Производительность платформы сущностей после запроса - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть структура класса в сущности, выглядит примерно так:

public class Parent
{
    public int Id { get; set; }

    public List<Child> Children { get; set; }

    //Lots more fields....
}

public class Child
{
    public int Id { get; set; }

    public int ParentId { get; set; }

    [ForeignKey("ParentId")]
    public Parent Parent { get; set; }

    //Lots more fields....
}

Затем я запускаю запрос к этим таблицам, используя следующий код:

Context.Database.Log = s => Debug.Print(s);
var ALL = Stopwatch.StartNew();
var query = context.Parent.Include(x => x.Children).Where(x => //Whatever...).ToList()();
ALL.Stop();
Context.Database.Log = null;

Выводотладка запроса говорит мне, что запрос тоже 773 мс, например, меньше секунды, но таймер сообщает мне, что весь процесс занял 2 секунды.

Учитывая это, я предполагаю, что дополнительная секунда или около того времени занимает Entityчтобы отобразить данные в объект - может ли кто-нибудь подтвердить, правильно ли это?

И что еще более важно - мой вопрос: каковы мои варианты сокращения этого времени?

Как примечание,этот код:

Context.Database.Log = s => Debug.Print(s);

выведет фактический SQL, который выполняется в командное окно в Visual Studio.

1 Ответ

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

Учитывая это, я предполагаю, что дополнительная секунда или около того - это время, которое требуется Entity для отображения данных в объект - может ли кто-нибудь подтвердить, правильно ли это?

Да, хотяВремя загрузки отображений улучшено в Entity Framework, оно все еще занимает время.

Согласно ответу @Mikael Eliasson [ 1 ],

  • Вы можете использовать Cached DbМодель
  • Вы можете сгенерировать предварительно скомпилированные представления
  • Вы можете сгенерировать предварительно скомпилированную версию EntityFramework, используя n-gen, чтобы избежать джиттинга (я не пробовал этот подход)
  • Вы можете разделить ваш DbContext на несколько частей и использовать несколько DbContex по своему усмотрению.

Надеюсь, это поможет

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