nHibernate,或带有.withSubquery的子句

nHibernate,或带有.withSubquery的子句,nhibernate,conditional-statements,Nhibernate,Conditional Statements,当使用“.withSubquery”时,我们如何强制nHibernate生成“OR”子句而不是“AND”子句 var includeSharedTemplateCategories= EntityFinder.Of<TemplateMappers.FolderEntity>() .Where(e => e.MID == effectiveMemberID) .Where(e => e.CategoryType == "shared_template") .Se

当使用“.withSubquery”时,我们如何强制nHibernate生成“OR”子句而不是“AND”子句

var includeSharedTemplateCategories= EntityFinder.Of<TemplateMappers.FolderEntity>()       .Where(e => e.MID == effectiveMemberID) .Where(e => e.CategoryType == "shared_template") .SelectList(e => e.Select(c => c.Id));

var includeNormalCategories = EntityFinder.Of<TemplateMappers.FolderEntity>()
.Where(e => e.MID == MemberID)
.Where(e => e.CategoryType == "template")
.SelectList(e => e.Select(c => c.Id));

var query = EntityFinder.Of<TemplateMappers.TemplateEntity>()
.Where(f => f.TemplateIsActive == 1)
.RestrictionByQuery<TemplateMappers.TemplateEntity, TemplateObject>(options)
.WithSubquery.WhereProperty(e => e.CategoryId).In(includeSharedTemplateCategories)
.WithSubquery.WhereProperty(e => e.CategoryId).In(includeNormalCategories)
.SelectByQuery<TemplateMappers.TemplateEntity, TemplateObject>(options)
.OrderByQuery<TemplateMappers.TemplateEntity, TemplateObject>(options);
我正在子查询之间寻找“OR”子句。

this_.fkcategoryid IN (SELECT this_0_.pkcategoryid AS y0_                                           FROM   categories this_0_ WHERE  this_0_.mid = xyz AND this_0_.categorytype = 's_template') 
**OR**  this_.fkcategoryid IN (SELECT this_0_.pkcategoryid AS y0_ FROM   dbo.tblcategories this_0_ WHERE  this_0_.mid = abc AND this_0_.categorytype = 'template'); 
kris.

var includeShared和NormalTemplateCategories=EntityFinder.Of()
.Where(e=>(e.MID==effectiveMemberID&&e.CategoryType==“共享模板”)||
(e.MID==MemberID&&e.CategoryType==“模板”))
.选择(e=>e.Id);
var query=EntityFinder.Of()
.Where(f=>f.TemplateIsActive)
.RestrictionByQuery(选项)
.WithSubquery.WhereProperty(e=>e.CategoryId).In(包括共享和正常模板类别)
.SelectByQuery(选项)
.OrderByQuery(选项);

旁注:
TemplateIsActive
应该是/is bool no?

谢谢它为我工作。在我们的系统中,Active标志是int。Thx
this_.fkcategoryid IN (SELECT this_0_.pkcategoryid AS y0_                                           FROM   categories this_0_ WHERE  this_0_.mid = xyz AND this_0_.categorytype = 's_template') 
**OR**  this_.fkcategoryid IN (SELECT this_0_.pkcategoryid AS y0_ FROM   dbo.tblcategories this_0_ WHERE  this_0_.mid = abc AND this_0_.categorytype = 'template'); 
var includeSharedAndNormalTemplateCategories = EntityFinder.Of<FolderEntity>()
       .Where(e => (e.MID == effectiveMemberID && e.CategoryType == "shared_template") ||
                   (e.MID == MemberID && e.CategoryType == "template"))
       .Select(e => e.Id);

var query = EntityFinder.Of<TemplateEntity>()
    .Where(f => f.TemplateIsActive)
    .RestrictionByQuery<TemplateEntity, TemplateObject>(options)
    .WithSubquery.WhereProperty(e => e.CategoryId).In(includeSharedAndNormalTemplateCategories)
    .SelectByQuery<TemplateEntity, TemplateObject>(options)
    .OrderByQuery<TemplateEntity, TemplateObject>(options);