Inquiridor
Erro ao inciar uma transacao de conexão do provedor

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 ??
Todas as Respostas
-
-
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
-
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.
-
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(); } } } }
-
-
-
- Editado Fulvio Cezar Canducci Dias sábado, 30 de novembro de 2013 00:51
-
-
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!
-
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 !!!
-
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'"); }
-
-
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 ...
- Editado Fulvio Cezar Canducci Dias sábado, 30 de novembro de 2013 13:06
-
-
-
-
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!