public FluxoAndamento RetornaFluxoAndamento(string modalidade, string tipoAndamento, string fase) { DetachedCriteria pesqAtividade = DetachedCriteria.For(typeof(Atividade)); pesqAtividade.Add(Expression.Eq("Descricao", tipoAndamento).IgnoreCase()); DetachedCriteria pesqFase = DetachedCriteria.For(typeof(Fase)); pesqFase.Add(Expression.Eq("Descricao", fase.ToUpper()).IgnoreCase()); DetachedCriteria pesqWorkFlow = DetachedCriteria.For(typeof(Workflow)); pesqWorkFlow.Add(Expression.Sql(@" this_.pk_cod_workflow_wor = (select fk_cod_workflow_wor from adm_licitar.tb_workflow_modalidade_unidade_exercicio_wmu wmu inner join adm_licitar.tb_modalidade_mod mod on mod.pk_cod_modalidade_mod = wmu.fk_cod_modalidade_mod where txt_descricao_mod ilike '" + modalidade + @"')")); Atividade.FindFirst(pesqAtividade); Workflow.FindFirst(pesqWorkFlow); Fase.FindFirst(pesqFase); DetachedCriteria pesqFluxoAndamento = DetachedCriteria.For(typeof(FluxoAndamento)); pesqFluxoAndamento.CreateAlias("Atividade", "ati").CreateAlias("Fase", "fas").CreateAlias("Workflow", "work"); pesqFluxoAndamento.Add(Expression.Eq("ati.Id", Atividade.FindFirst(pesqAtividade).Id)); pesqFluxoAndamento.Add(Expression.Eq("fas.Id", Fase.FindFirst(pesqFase).Id)); pesqFluxoAndamento.Add(Expression.Eq("work.Id", Workflow.FindFirst(pesqWorkFlow).Id)); pesqFluxoAndamento.Add(Expression.Eq("CombinacaoAtiva", true)); return(FluxoAndamento.FindFirst(pesqFluxoAndamento)); }