C# 如何使用NHibernate CreateCriteria进行可能为空值的联接?
NHibernate版本:3.3.1 原始查询如下所示C# 如何使用NHibernate CreateCriteria进行可能为空值的联接?,c#,nhibernate,C#,Nhibernate,NHibernate版本:3.3.1 原始查询如下所示 List<PostInstruction> instructions = PostInstruction.Query( Restrictions.Eq("Campaign", campaign), Restrictions.In("Status", new PostInstructionStatus[] { PostInstructionStatus.Pending,
List<PostInstruction> instructions = PostInstruction.Query(
Restrictions.Eq("Campaign", campaign),
Restrictions.In("Status", new PostInstructionStatus[] {
PostInstructionStatus.Pending,
PostInstructionStatus.Finished
}),
Restrictions.Or(
Restrictions.Gt("DateCreated", DateTime.UtcNow - TimeSpan.FromMinutes(15)),
Restrictions.IsNotNull("Post")
)
);
通过查询,您应该能够执行以下操作:
var instructionsCount = session.QueryOver<PostInstruction>()
.Select(Projections.Count<PostInstruction>(pi => pi.Id))
.Where(pi => pi.Campaign == campaign && pi.City == city && (pi.Post == PostStatus.Pending || pi.Post == PostStatus.Live || pi.Post == null)); //Add your other conditions
Console.WriteLine(instructionsCount.SingleOrDefault<int>());
var instructionscont=session.QueryOver()
.Select(projects.Count(pi=>pi.Id))
其中(pi=>pi.Campaign==Campaign&&pi.City==City&(pi.Post==PostStatus.Pending | | pi.Post==PostStatus.Live | | pi.Post==null))//添加其他条件
Console.WriteLine(指令计数.SingleOrDefault());
您正在运行哪个版本的nHibernate。。。出于好奇:为什么在每次查询之前都要启动一个事务?使用3.3.1,因为我只是复制粘贴代码以使其运行,同时我尝试在一个查询中找出如何执行它。我下面的答案对您有帮助吗?
var instructionsCount = session.QueryOver<PostInstruction>()
.Select(Projections.Count<PostInstruction>(pi => pi.Id))
.Where(pi => pi.Campaign == campaign && pi.City == city && (pi.Post == PostStatus.Pending || pi.Post == PostStatus.Live || pi.Post == null)); //Add your other conditions
Console.WriteLine(instructionsCount.SingleOrDefault<int>());