var query = DetachedCriteria.For<A>()
.CreateAlias("Estimate", "estimate")
.Add(Restrictions.Eq("estimate.PaymentStatus.Id", 5))
.Add(Restrictions.Eq("estimate.TransferStatus", null) || Restrictions.Eq("estimate.TransferStatus", TransferStatus.WhateverIs1))
.CreateCriteria("Project", JoinType.InnerJoin)
.Add(Restrictions.Eq("ArchiveStatus.Id", 1))
.Add(Restrictions.Eq("DateDeleted", null))
.Add(Restrictions.Eq("OutlineAgreement.Id", 14))
.List<A>();