NHibernate QueryOver:连接表可以为空的析取

时间:2013-07-12 08:35:49

标签: sql nhibernate

我需要一个带有OR析取的查询,并且可以为空的表连接。

我想搜索具有“DscData”或至少有一个“Dsc”类型的“注释”的“条目”。

数据库看起来像这样。

CREATE TABLE LogbookDscData 
( 
   [Id] INTEGER PRIMARY KEY, 
);

CREATE TABLE LogbookEntry
(
   [Id] INTEGER PRIMARY KEY,
   FOREIGN KEY (DscDataId) REFERENCES LogbookDscData(Id)
);

CREATE TABLE LogbookComment
(
   [Id] INTEGER PRIMARY KEY,
   [Type] TINYINT NOT NULL,
   FOREIGN KEY ([EntryId]) REFERENCES LogbookEntry(Id)
);

条目可以有0-N条评论。 一个条目可以有DscData。

到目前为止我的代码:

IQueryOver<Entry, Entry> query

     Comment comment = null;
     query.JoinAlias(x => x.Comments, () => comment);

     var disjunction = new Disjunction();
     disjunction.Add(Restrictions.Where<Entry>(x => x.DscData != null));
     disjunction.Add(Restrictions.On(() => comment.Type).IsLike(CommentType.Dsc));

     query.And(disjunction);

问题是当没有与Entry相关的注释时,此代码不起作用。 我希望条目匹配,如果他们有DscData或者他们至少有一个类型为DSC的评论。

我在this帖子中找到了一个非常有用的答案,但它并没有解决我的问题。

0 个答案:

没有答案