Оптимизация запроса nhibernate - PullRequest
0 голосов
/ 04 января 2012

У меня есть следующие отношения

    class Author
    {
       int Id;
    }

    class Publisher
    {
       int Id;
    }

    class Book
    {
       Publisher Publisher;
       Author Author;
       DateTime PublishDate;
    }

Я бы хотел оптимизировать следующий запрос:

    foreach (Publisher)
    {
       foreach (Author)
       {
          session.Query<Book>()
             .Where(x=> x.Author.Id == Author.Id && x.Publisher.Id ==Publisher.Id)
             .OrderByDescending(x=> x.PublishDate)
             .Take(5);
       }
    }

Я понимаю, что с точки зрения производительности этот код ужасен, как я могу улучшить его и получить те же результаты в меньшем количестве запросов?

Большое спасибо!

1 Ответ

0 голосов
/ 04 января 2012

Есть много способов, которыми мы можем сделать. Зависит от вашего варианта использования, какой объект вы получите первым

Здесь я упомянул один способ

DetachedCriteria forBook=DetachedCriteria.For<Book>();
forBook.CreateCriteria("Publisher");
forBook.CreateCriteria("Author");
ICriteria executableCriteria=forBook.GetExecutableCriteria(session);
executableCriteria.SetFirstResult(0).SetMaxResult(5);
executableCriteria.AddOrder(Order.Desc("PublishDate"));
executableCriteria.List<Book>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...