vendasDoPdv.ForEach(vendaPdv =>
{
if (IgnoraNessaSincronizacao(vendaPdv))
return;
var ecfCompativel = BuscaEcfCompativelDoAdm(emissoresDoAdm, vendaPdv);
if (ecfCompativel == null)
return;
PessoaDt pessoaComaptivel = null;
if (vendaPdv.ClienteDt != null)
pessoaComaptivel = BuscaPessoaCompativel(vendaPdv);
if (vendaPdv.ClienteDt != null && pessoaComaptivel == null)
return;
var transacaoAdm = SessaoAdm.BeginTransaction();
var transacaoPdv = SessaoPdv.BeginTransaction();
var vendaAdm = CriarVendaAdm(vendaPdv, pessoaComaptivel, ecfCompativel);
try
{
PersitirVenda(vendaPdv, vendaAdm);
EnviarItens(vendaPdv.VendaEcfItens, vendaAdm);
EnviarPagamentos(vendaPdv.VendaEcfPagamentos, vendaAdm);
transacaoAdm.Commit();
transacaoPdv.Commit();
RegistraEvento = true;
}
catch (Exception)
{
transacaoPdv.Rollback();
transacaoAdm.Rollback();
throw;
}
});
oque acontece, ele deu um erro e logo depois do erro que ele entrou no catch , quando ele foi executar o transacaoAdm.Rollback();
ele lançou outra exception, e não fez o Rollback() -.-'
aí oque acontece… eu deletei o registro que ele não fez rollback, e tudo funcionou normalmente…
simplesmente do nada ele deu um erro so não fez o rollback oque me leva a pensar que talvez seja algo mal usado da minha parte… consequencias de ter o código do jeito que esta alguem arrisca dizer?
exception lançada…
21/02/2016 09:38:24:Serviço iniciou uma sincronização
21/02/2016 09:38:25:Serviço concluiu com exito a sincronização
21/02/2016 09:39:26:Serviço iniciou uma sincronização
21/02/2016 09:39:26:Serviço concluiu com exito a sincronização
21/02/2016 09:40:27:Serviço iniciou uma sincronização
21/02/2016 09:40:27:Serviço concluiu com exito a sincronização
21/02/2016 09:41:28:Serviço iniciou uma sincronização
21/02/2016 09:41:29:Serviço concluiu com exito a sincronização
21/02/2016 09:42:30:Serviço iniciou uma sincronização
21/02/2016 09:42:30:Serviço concluiu com exito a sincronização
21/02/2016 09:43:31:Serviço iniciou uma sincronização
21/02/2016 09:43:32:Serviço concluiu com exito a sincronização
21/02/2016 09:44:33:Serviço iniciou uma sincronização
21/02/2016 09:44:33:Serviço concluiu com exito a sincronização
21/02/2016 09:45:34:Serviço iniciou uma sincronização
21/02/2016 09:45:34:Serviço concluiu com exito a sincronização
21/02/2016 09:46:35:Serviço iniciou uma sincronização
21/02/2016 09:55:12:Serviço falhou na sincronizacao
21/02/2016 09:55:12:Mensagem de erro: Transaction not successfully started
21/02/2016 09:55:13:StackTrace: at FusionCore.PdvSincronizador.Sync.Sincronizador.SincronizarTudo() in C:\Users\Roberto\Documents\Projetos\Fusion\FusionCore\PdvSincronizador\Sync\Sincronizador.cs:line 79
at FusionSincronizador.Core.ServicoSincronizadorMain.ExecutarSincronizacao() in C:\Users\Roberto\Documents\Projetos\Fusion\PdvSincronizador\Core\ServicoSincronizadorMain.cs:line 22
21/02/2016 09:55:13:— Inner Exception —
21/02/2016 09:55:13:Mensagem de erro:Transaction not successfully started
21/02/2016 09:55:13:StackTrace: at FusionCore.PdvSincronizador.Sync.Sincronizador.RealizarSincronizacao(ISincronizacao sincronizacao) in C:\Users\Roberto\Documents\Projetos\Fusion\FusionCore\PdvSincronizador\Sync\Sincronizador.cs:line 31
at FusionCore.PdvSincronizador.Sync.Sincronizador.SincronizarTudo() in C:\Users\Roberto\Documents\Projetos\Fusion\FusionCore\PdvSincronizador\Sync\Sincronizador.cs:line 68
21/02/2016 09:55:13:— Inner Exception —
21/02/2016 09:55:13:Mensagem de erro:Transaction not successfully started
21/02/2016 09:55:13:StackTrace: at NHibernate.Transaction.AdoTransaction.CheckBegun()
at NHibernate.Transaction.AdoTransaction.Rollback()
at FusionCore.PdvSincronizador.Sync.Estrategia.EnviarVendasEcf.<>c__DisplayClass3_0.b__0(VendaEcfDt vendaPdv) in C:\Users\Roberto\Documents\Projetos\Fusion\FusionCore\PdvSincronizador\Sync\Estrategia\EnviarVendasEcf.cs:line 65
at NHibernate.Util.EnumerableExtensions.ForEach[T](IEnumerable1 query, Action1 method)
at FusionCore.PdvSincronizador.Sync.Estrategia.EnviarVendasEcf.Sincronizar(DateTime ultimaSincronizacao) in C:\Users\Roberto\Documents\Projetos\Fusion\FusionCore\PdvSincronizador\Sync\Estrategia\EnviarVendasEcf.cs:line 30
at FusionCore.PdvSincronizador.Sync.Sincronizador.RealizarSincronizacao(ISincronizacao sincronizacao) in C:\Users\Roberto\Documents\Projetos\Fusion\FusionCore\PdvSincronizador\Sync\Sincronizador.cs:line 25
oque acontece… se ele tivesse efetuado o rollback , e fizesse a sincronização novamente ele funcionaria perfeito sem erros na proxima sincronização… dai e onde tiro conclusão que tem algo relacionado ao nhibernate, uma configuração talvez ou sei lá hehe se alguém poder ajudar =D