nhibernate: проецировать родителя из дочернего запроса

У меня есть следующие объекты

public class ArticleCategory
{
  public int Id {get; set;}
  public string Name {get; set;}
  public IList<Article> Articles {get; set;}
}

public class Article
{
  public int Id {get; set;}
  public string Name {get; set;}
  public ArticleCategory Category {get; set;}
}

public class JobArticles
{
  public int Id {get; set;}
  public Job Job {get; set;}
  public decimal Price {get; set;}
  public Article Article {get; set;}
}

Как вы можете видеть, статья ничего не знает о том, какой JobArticle она была назначена (это не имеет значения).

Итак, что мне нужно сделать, это следующее. Получите каждую категорию статей, для которой существуют статьи о работе для задания X.

Самый простой способ — добавить список вакансий в объект статьи. Но я не уверен, что это лучший способ.

Поэтому я попробовал противоположный путь (перешел от JobArticle к ArticleCategory). Что-то такое

IQueryOver<JobArticle, JobArticle> q = DataSession.Current.QueryOver<JobArticle>();

        Article ArticleAlias = null;
        ArticleCategory ArticleCategoryAlias = null;

        q.JoinAlias(x => x.Article, () => ArticleAlias);
        q.JoinAlias(x => ArticleAlias.Category, () => ArticleCategoryAlias);
        q.Where(x => x.Job.Id == jobId);
        q.SelectList(list => list
            .Select(x => ArticleCategoryAlias))

Что приводит к исключению NULL-Reference, потому что .Select(x => ArticleCategoryAlias)

Я не совсем уверен, как это сделать, надеюсь, вы можете помочь


person Arikael    schedule 10.10.2012    source источник
comment
Если вам нужна дополнительная информация, я буду рад предоставить ее.   -  person Arikael    schedule 11.10.2012


Ответы (1)


person    schedule
comment
извините, это заняло много времени, я только что реализовал и протестировал ваше решение. Раньше это не было нужно (и я не мог его протестировать). Я не уверен, что это версия nhibernate, но мне пришлось изменить .WithSubquery.Where на .WithSubquery.WhereProperty - person Arikael; 06.03.2013
comment
Насколько я помню, я написал это из головы. исправлено. - person Firo; 07.03.2013