【问题标题】:Optimizing nhibernate query优化休眠查询
【发布时间】:2012-02-01 22:07:47
【问题描述】:

我有以下关系

    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);
       }
    }

我意识到这段代码在性能方面很糟糕,我该如何改进它并在更少的查询中获得相同的结果?

非常感谢!

【问题讨论】:

    标签: c# nhibernate session optimization


    【解决方案1】:

    我们有很多方法可以做。这取决于你的用例你先得到哪个对象

    这里我提到了一种方法

    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>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多