none
Erro ao inciar uma transacao de conexão do provedor RRS feed

  • Pergunta

  •  Mov_Emprestimo movi = new Mov_Emprestimo();
                DateTime data = DateTime.Now;
    
                var verifica = from c in contexto.TB_LEITORES
                               where c.DATA_PREVISTA_DESBLOQUEIO <= data && c.SITUACAO == "INATIVO"
                               select c;
                try
                {
                    foreach (var item in verifica)
                    {
                        var atualizar = contexto.TB_LEITORES.FirstOrDefault(c => c.COD_LEITOR == item.COD_LEITOR && c.SITUACAO == "INATIVO");
                        if (atualizar != null)
                        {
                            atualizar.SITUACAO = "ATIVO";
                            atualizar.DATA_PREVISTA_DESBLOQUEIO = data;
    
                            contexto.TB_LEITORES.Add(atualizar);
                            contexto.SaveChanges();
                        }
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show("Test"+ ex);
                }

    a linha cai no contexto.SalveChanges();

    Como corrigir ??

    quinta-feira, 28 de novembro de 2013 18:46

Todas as Respostas

  • Olá Thiago,

    Como você está abrindo o contexto? Tente user using() { seu código aqui} ... Então assim que ele terminar de utilizar o contexto ele fará um dispose automaticamente.

    Abs

    quinta-feira, 28 de novembro de 2013 19:04
  • Alterei olha 

     private void MenuPrincipal_Load(object sender, EventArgs e)
            {
                using (BIBLIOTECAEntities contexto = new BIBLIOTECAEntities())
                {
                    DateTime dia = DateTime.Now.Date;
                    var chave = contexto.TB_LEITORES.Where(c => dia >= c.DATA_PREVISTA_DESBLOQUEIO && c.SITUACAO == "INATIVO");
    
                    try
                    {
                        foreach (var item in chave)
                        {
                            var atualizar = contexto.TB_LEITORES.FirstOrDefault(p => p.COD_LEITOR == item.COD_LEITOR && dia >= p.DATA_PREVISTA_DESBLOQUEIO && p.SITUACAO == "INATIVO");
                            if (atualizar != null)
                            {
                                atualizar.SITUACAO = "ATIVO";
                                atualizar.DATA_PREVISTA_DESBLOQUEIO = dia;
                                contexto.SaveChanges();
                            }
    
    
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Test" + ex);
                    }
                }
             
    
                    ToolTip tp = new ToolTip();
                    tp.SetToolTip(btnLeitor, "Atalho para a tela de Cadastro de 'LEITORES'");
    
                    ToolTip tp1 = new ToolTip();
                    tp1.SetToolTip(btnLivros, "Atalho para a tela de Cadastro de LIVROS'");
    
                    ToolTip tp2 = new ToolTip();
                    tp2.SetToolTip(btnExemplar, "Atalho para a tela de Cadastro de 'EXEMPLARES'");
    
                    ToolTip tp3 = new ToolTip();
                    tp3.SetToolTip(btnEmprestimos, "Atalho para a tela de Movimentação de 'EMPRESTIMOS'");
             }
                

    O ERRO CONTINUA NA MESMA LINHA OLHA:

    O que há de errado com esse codigo ?

    Att



    • Editado Thiago2522 sexta-feira, 29 de novembro de 2013 12:59
    sexta-feira, 29 de novembro de 2013 12:57
  • Então, o erro diz que a transação não é suportada, porque há outros processos rodando que estão impedindo o start da transação. Poste o código de sua transação e os demais que envolvam a transação, para podermos analisar melhor sua dúvida e responder. O problema está na transação e não no código postado.
    sexta-feira, 29 de novembro de 2013 13:26
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using BIBLIOTECA;
    
    
    namespace EasyLibrary.Forms
    {
        public partial class MenuPrincipal : Form
        {
            
    
            public MenuPrincipal()
            {
                InitializeComponent();
            }
        
             private void MenuPrincipal_Load(object sender, EventArgs e)
            {
               
                   
    
                    try
                    {
                        using (BIBLIOTECAEntities contexto = new BIBLIOTECAEntities())
                        {
                            DateTime dia = DateTime.Now.Date;
                            var chave = contexto.TB_LEITORES.Where(c => dia >= c.DATA_PREVISTA_DESBLOQUEIO && c.SITUACAO == "INATIVO");
                            foreach (var item in chave)
                            {
                                var atualizar = contexto.TB_LEITORES.FirstOrDefault(p => p.COD_LEITOR == item.COD_LEITOR && dia >= p.DATA_PREVISTA_DESBLOQUEIO && p.SITUACAO == "INATIVO");
                                if (atualizar != null)
                                {
                                    atualizar.SITUACAO = "ATIVO";
                                    atualizar.DATA_PREVISTA_DESBLOQUEIO = dia;
                                    contexto.SaveChanges();
                                }
    
    
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Test" + ex);
                    }
    
    
    
                    ToolTip tp = new ToolTip();
                    tp.SetToolTip(btnLeitor, "Atalho para a tela de Cadastro de 'LEITORES'");
    
                    ToolTip tp1 = new ToolTip();
                    tp1.SetToolTip(btnLivros, "Atalho para a tela de Cadastro de LIVROS'");
    
                    ToolTip tp2 = new ToolTip();
                    tp2.SetToolTip(btnExemplar, "Atalho para a tela de Cadastro de 'EXEMPLARES'");
    
                    ToolTip tp3 = new ToolTip();
                    tp3.SetToolTip(btnEmprestimos, "Atalho para a tela de Movimentação de 'EMPRESTIMOS'");
                
             }
                
             
            private void categoriasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Categorias categorias = new Cad_Categorias();
                categorias.ShowDialog();
            }
    
            private void autoresToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Autores autores = new Cad_Autores();
                autores.ShowDialog();
            }
    
            private void areasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Areas areas = new Cad_Areas();
                areas.ShowDialog();
            }
    
            private void armáriosToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Armarios armarios = new Cad_Armarios();
                armarios.ShowDialog();
            }
    
            private void blocosToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Blocos blocos = new Cad_Blocos();
                blocos.ShowDialog();
            }
    
            private void cidadesToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Cidades cidades = new Cad_Cidades();
                cidades.ShowDialog();
            }
    
            private void cursosToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Cursos cursos = new Cad_Cursos();
                cursos.ShowDialog();
            }
    
            private void editorasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Editoras editoras = new Cad_Editoras();
                editoras.ShowDialog();
            }
    
            private void exemplaresToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Exemplares exemplares = new Cad_Exemplares();
                exemplares.ShowDialog();
            }
    
            private void feriadosToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                Cad_Feriados feriados = new Cad_Feriados();
                feriados.ShowDialog();
    
            }
    
            private void gênerosToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Generos generos = new Cad_Generos();
                generos.ShowDialog();
            }
    
            private void instituiçãoToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Instituicoes instituicoes = new Cad_Instituicoes();
                instituicoes.ShowDialog();
            }
    
            private void leitorToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Leitores leitores = new Cad_Leitores();
                leitores.ShowDialog();
            }
    
            private void livroToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Livros livros = new Cad_Livros();
                livros.ShowDialog();
            }
    
            private void multaToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Multas multas = new Cad_Multas();
                multas.ShowDialog();
            }
    
            private void oficinaToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Oficinas oficinas = new Cad_Oficinas();
                oficinas.ShowDialog();
            }
    
            private void prateleiraToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Prateleiras prateleiras = new Cad_Prateleiras();
                prateleiras.ShowDialog();
    
            }
    
            private void usuarioToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Salas salas = new Cad_Salas();
                salas.ShowDialog();
            }
    
            private void feriadosToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Temas temas = new Cad_Temas();
                temas.ShowDialog();
            }
    
            private void usuárioToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Cad_Usuarios usuarios = new Cad_Usuarios();
                usuarios.ShowDialog();
    
            }
    
            
          
           
    
               
    
            private void empréstimoToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Mov_Emprestimo movi = new Mov_Emprestimo();
                movi.ShowDialog();
            }
            // FECHAMENTO DO FORM
            // MENSAGEM QUANDO FECHAR O FORM SE SIM OU NAO
            private void MenuPrincipal_FormClosing(object sender, FormClosingEventArgs e)
            {
                DialogResult Dialogo = MessageBox.Show("Deseja realmente sair do Sistema", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                switch (Dialogo)
                {
                    case DialogResult.Yes:
                        e.Cancel = false;
    
                        break;
    
                    case DialogResult.No:
                        e.Cancel = true;
                        break;
    
                }
    
    
    
    
    
    
    
            }
    
            private void btnLeitor_Click(object sender, EventArgs e)
            {
                Cad_Leitores leitor = new Cad_Leitores();
                leitor.ShowDialog();
            }
    
            private void btnLivros_Click(object sender, EventArgs e)
            {
                Cad_Livros livros = new Cad_Livros();
                livros.ShowDialog();
            }
    
            private void btnExemplar_Click(object sender, EventArgs e)
            {
                Cad_Exemplares exemplar = new Cad_Exemplares();
                exemplar.ShowDialog();
            }
    
            private void btnEmprestimos_Click(object sender, EventArgs e)
            {
                Mov_Emprestimo emp = new Mov_Emprestimo();
                emp.ShowDialog();
            }
    
            private void pesquisarToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Pesquisar pes = new Pesquisar();
                pes.ShowDialog();
            }
    
            //QUANDO CLICAR MUDA A COR
            private void cadastrosToolStripMenuItem_MouseDown(object sender, MouseEventArgs e)
            {
                //cadastrosToolStripMenuItem.ForeColor = Color.White;
            }
    
            //QUANDO SAIR DO COMPONENTE
            private void cadastrosToolStripMenuItem_MouseLeave(object sender, EventArgs e)
            {
                //cadastrosToolStripMenuItem.ForeColor = Color.White;
            }
    
            //EVENTO MOUSE HOVER quando CLICAR
            private void cadastrosToolStripMenuItem_MouseHover(object sender, EventArgs e)
            {
              
                cadastrosToolStripMenuItem.ForeColor = Color.Black;
            }
    
            private void movimentaçõesToolStripMenuItem_MouseHover(object sender, EventArgs e)
            {
                cadastrosToolStripMenuItem.ForeColor = Color.Black;
            }
    
            private void deavolçãoToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Mov_Devolucao dev = new Mov_Devolucao();
                dev.ShowDialog();
            }
    
            private void BtnPesMov_Click(object sender, EventArgs e)
            {
                Pes_Reserva pesmov = new Pes_Reserva();
                pesmov.ShowDialog();
            }
    
            private void emprétimosToolStripMenuItem_Click(object sender, EventArgs e)
            {
                
    
            }
    
            private void reservasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Relatorios RPT = new Relatorios();
    
                //Envia esse dados para minha classe relatorio
                string stringConexao = @"Data Source=.\sqlexpress;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\BIBLIOTECA.mdf;Integrated Security=True";
                string comandoSql = "select TB_EXEMPLARES.COD_EXEMPLAR,NUMERO,DATAHORA_DELUCAO_PREVISTA FROM TB_EXEMPLARES,TB_EXEMPLARES_EMPRESTIMOS WHERE TB_EXEMPLARES.COD_EXEMPLAR = TB_EXEMPLARES_EMPRESTIMOS.COD_EXEMPLAR";
                string caminhoRelatorio = "EasyLibrary.Relatorio.EMPRESTIMO_E_EXEMPLARES_EMPRESTIMO.rdlc";
                string dataSetdoRelatorio = "DataSet";
    
                RPT.ImprimirRelatorio(stringConexao, comandoSql, caminhoRelatorio, dataSetdoRelatorio);
            }
    
            private void porEditorasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                LivrosPorEditora livroEditora = new LivrosPorEditora();
                livroEditora.ShowDialog();
    
            }
    
            private void porGênerosToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Livro_Genero livrogenero = new Livro_Genero();
                livrogenero.ShowDialog();
            }        
        }
    
    }
    

    esse é todo o codigo pagina em questão.

    Classe Relatório

    using System;
    using System.Data;
    using System.Data.SqlClient;  //Utilizado para trabalhar com SQLServer
    using System.Windows.Forms;
    using Microsoft.Reporting.WinForms;
    using EasyLibrary.Forms;
    
    namespace BIBLIOTECA
    {
        class Relatorios
        {
            public void ImprimirRelatorio(string stringConexao, string comandoSql, string caminhoRelatorio, string dataSetdoRelatorio)
            {
                Relatorio rpt = new Relatorio();  //NOme do formulario de relatório
                BindingSource bsDados = new BindingSource();
                SqlConnection conexao = new SqlConnection(stringConexao);
                try
                {
                    conexao.Open();
                    SqlCommand sql = new SqlCommand(comandoSql, conexao);
                    SqlDataAdapter da = new SqlDataAdapter(sql);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    bsDados.DataSource = ds;
                    bsDados.DataMember = ds.Tables[0].TableName;
                    rpt.reportViewer1.LocalReport.ReportEmbeddedResource = caminhoRelatorio;
                    rpt.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(dataSetdoRelatorio, bsDados));
                    rpt.reportViewer1.RefreshReport();
                    rpt.ShowDialog();
                }
                catch (Exception  ex)
                {
                    MessageBox.Show("Ocorreu um erro ao tentar obter os dados.\nDescrição do erro: " + ex);
                }
                finally
                {
                    conexao.Close();
                }
            }
        }
    }
    

    sexta-feira, 29 de novembro de 2013 21:45
  • Ta errado a lógica do Entity Framework ele não vai deixar mesmo!

    Na propria lista do "var chave" se não consegue sem trazer um FirstOrDefault() fazer as alterações e no final gravar tudo...

    O que você ta querendo fazer ???


    Fulvio Cezar Canducci Dias

    sábado, 30 de novembro de 2013 00:14
  • Estou querendo atualizar quando iniciar o form, só que o FirstOrDefault é da sintaxe do codigo de atualizar não é.

    O que fazer ?

     
    sábado, 30 de novembro de 2013 00:42
  • Não .... Sintase de pegar apenas o primeiro ou null


    Fulvio Cezar Canducci Dias


    sábado, 30 de novembro de 2013 00:51
  • O erro continua o mesmo pegando o primeiro ....
    sábado, 30 de novembro de 2013 00:57
  • Thiago!

    Presta atenção, você ta usando de modo indevido o Entity Framework!

    Você ta provocando o erro !!! e fazendo ele pesquisar o mesmo registro várias vezes!!!

    Então na lista da variavel chave se pode fazer a alteração e no final dar um SaveChanges!

    Só que eu não consigo ajudar sem o relato do que deseja fazer e como ta sua classe de Persistência!

    Cole modelo de tabela, modelo de camada, SQL string de criação dessa tabela que a gente pode até ajudar!


    Fulvio Cezar Canducci Dias

    sábado, 30 de novembro de 2013 11:34
  • A ideia é a seguinte : iniciou o menu principal do sistema, a var chave vai no banco e me traz todos os leitores que tem a DATA_PREVISTA_DESBLOQUEIO menor ou igual  a data de hoje e a situção esteja inativa ok.

    Trouxe, agora quero atualizar os registro desses leitores a partir do seu código, pondo suas situações ativas e suas datas prevista de desbloqueio igual a data de hoje !!! 

     
    sábado, 30 de novembro de 2013 12:14
  • Teste assim: Pelo que eu percebi você ta querendo pegar os dados do chave e rodar linha a linha para alterar todos os seus dados ... se for isso que ta embaixo vai funcionar se não poste mais informações ...

    Até dá daquele jeito mas, faz desse jeito aquele outro tem que fazer um negocio... e assim é mais direto!

    private void MenuPrincipal_Load(object sender, EventArgs e)
    {
    	using (BIBLIOTECAEntities contexto = new BIBLIOTECAEntities())
    	{
    		DateTime dia = DateTime.Now.Date;
    		var chave = contexto.TB_LEITORES.Where(c => dia >= c.DATA_PREVISTA_DESBLOQUEIO && c.SITUACAO == "INATIVO");
    
    		try
    		{
    			foreach (Int32 i = 0; i < chave.Count(); i++)
    			{
    				chave[i].SITUACAO = "ATIVO";
    				chave[i].DATA_PREVISTA_DESBLOQUEIO = dia;
    			}
    			contexto.SaveChanges();
    		}
    		catch (Exception ex)
    		{
    			MessageBox.Show("Test" + ex);
    		}
    	}
     
    
    	ToolTip tp = new ToolTip();
    	tp.SetToolTip(btnLeitor, "Atalho para a tela de Cadastro de 'LEITORES'");
    
    	ToolTip tp1 = new ToolTip();
    	tp1.SetToolTip(btnLivros, "Atalho para a tela de Cadastro de LIVROS'");
    
    	ToolTip tp2 = new ToolTip();
    	tp2.SetToolTip(btnExemplar, "Atalho para a tela de Cadastro de 'EXEMPLARES'");
    
    	ToolTip tp3 = new ToolTip();
    	tp3.SetToolTip(btnEmprestimos, "Atalho para a tela de Movimentação de 'EMPRESTIMOS'");
    }


    Fulvio Cezar Canducci Dias

    sábado, 30 de novembro de 2013 12:44
  • O foreach não trabalha com as coleções de dados? Como que vai sabe qual coleção ele tem que acessar, acho que seu código ta um pouco sem sentido, não ta não ?

    sábado, 30 de novembro de 2013 13:00
  • O foreach não trabalha com as coleções de dados? Como que vai sabe qual coleção ele tem que acessar, acho que seu código ta um pouco sem sentido, não ta não ?

    Acredito que o seu código ta sem sentido não ta não!!!

    Eu coloque ForEach por copiei e colei é somente "For"

    For somente tira o ForEach!

    For(Int32 ...


    Fulvio Cezar Canducci Dias


    sábado, 30 de novembro de 2013 13:05
  • E agora como ele vai saber qual a linha do Leitor correto para atualizar a data e a situação?

    sábado, 30 de novembro de 2013 13:09
  • E agora como ele vai saber qual a linha do Leitor correto para atualizar a data e a situação?

    ToList() lá no final da linha (var chave .... "INATIVO").ToList() coloque toList() no último comando 

    Fulvio Cezar Canducci Dias

    sábado, 30 de novembro de 2013 13:14
  • Meu Deus funcionou, obrigado Fulvio, cara me explica essa logica que você usou ? E porque a minha lógica estava dando erro?
    sábado, 30 de novembro de 2013 13:21
  • Primeiro ... você ta com o dado anexado no contexto não precisa chamar mais ele tava na lista e isso a ligado no contexto .. (mais ou menos assim) existe forma de sair um pesquisa limpa ... mas, para você isso resolve!

    Estudar mais sobre Entity Framework essa é minha dica!

    Feche o post ok!


    Fulvio Cezar Canducci Dias

    sábado, 30 de novembro de 2013 13:27