次のエンティティがあります
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;}
}
ご覧のとおり、Article はどの JobArticle に割り当てられているかについて何も認識していません (関係ありません)。
だから私がする必要があるのは次のことです。ジョブ X の JobArticles が存在するすべての ArticleCategory を取得します。
最も簡単な方法は、JobArticles のリストを Article エンティティに追加することです。しかし、それが最善の方法であるかどうかはわかりません。
そこで、逆の方法 (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 参照例外につながります。.Select(x => ArticleCategoryAlias)
どうすればいいのかわからないので、お役に立てれば幸いです