none
Manter sessão no Nhibernate. RRS feed

  • Pergunta

  • Olá,

    Meu projeto é ASP.NET, VS2008, NHibernate 2.2.

    Tenho uma tabela temporária (Y) no meu Banco de Dados que funciona da seguinte maneira:

    Quando eu abro a instância de conexão do BD eu consigo inserir dados e consultá-los, entretanto, quando a sessão encerra os dados são apagados automaticamente.

    Preciso pegar um conteúdo e gravar nessa tabela temporária Y, e, logo após, preciso fazer uma consulta envolvendo essa tabela Y.

    Como faria esse "Save" e essa consulta NA MESMA SESSÃO?

    Já tentei utilizar a propriedade "<property name="connection.release_mode">on_close</property>" mas não tive sucesso.

    O código que bolei foi esse aqui, mas quando eu dou um commit eu perco a sessão. Não sei se é por conta do commit ou se ao tentar "CreateSQLQuery" ele perde a sessão. Já tentei substituir o Commit por Flush mas não tive sucesso também.

    public IList SaveEConsulta(IList<T> objts, String sqlQuery, bool finaliza)
            {
                try
                {
                    transaction = session.BeginTransaction();
                    foreach (T obj in objts)
                    {
                        session.Save(obj);
                    }
                   
                    transaction.Commit();
                    IList lista = session.CreateSQLQuery(sqlQuery).List();
                    return lista;
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw new Exception(ex.Message);
                }
                finally
                {
                    if (finaliza)
                        Finaliza();
                }
            }

    Desde já agradeço a atenção.

    terça-feira, 20 de março de 2012 13:13

Respostas

  • Pessoal, já resolvi o problema.

    Vou postar aqui:

    A tabela que eu estava acessando no Oracle é temporária. Logo, ao término de uma transação os dados da tabela eram perdidos.

    Bastou eu remover as transações que funcionou.

    Me desculpem se não fui muito claro na minha pergunta, é que eu estava com muita pressa para resolver e não consegui elaborar uma pergunta mais clara.

    De toda forma, fica a resolução.

    Abraços.

    • Marcado como Resposta André Ciríaco terça-feira, 20 de março de 2012 14:21
    terça-feira, 20 de março de 2012 14:21