Array
(
)

ASP.NET - Codigo Fonte (passo-a-passo[DEBUG]) sem sequencia logica

Edson Hashimoto
   - 06 mar 2015

Bom dia.
Estou desenvolvendo no Visual Studio 2010. Crio o projeto. Mas qdo vou debugar o passo-a-passo dele, nao segue a sequencia do codigo.
Ele esta numa linha, depois volta, vai pra outro DAO, volta. As vezes passa 3 vezes no mesmo lugar, nesse vai e vem.. No fim, acaba funcionando.
Mas como estou fazendo conexao com o BD e ate em 2 BD diferentes, acontece o seguinte.
Tenho esse codigo por exemplo:
#Código

            using (SqlConnection conexao = SistemaController.OpenSession())
            {
                using (SqlCommand comando = conexao.CreateCommand())
                {
                    comando.CommandText = "Select * from BLABLABLA";
                    using (dr = comando.ExecuteReader())
                    {
                        return CarregaObjeto(dr);
                    }
                }
            }


Simples, estou abrindo uma conexao, fazendo um select e fechando. Mas enquanto esta abrindo a conexao "conecting", o codigo vai pra outro select, volta, ae da esse erro:
"ExecuteReader requires an open and available Connection. The connection's current state is connecting."
Estou usando uma conexao static, pois utilizo transactionScope. Enquanto estou abrindo uma conexao, o codigo vai pra outro DAO, fazendo uma nova conexao e tentando abrir..
Como se fosse assincrono.
Isso eh assim mesmo?
Ja adicionei na minha string de conexao "MultipleActiveResultSets=True;"
Tenho Alguns projetos no VS2010 mesmo, mas em C# e funciona certo. No ASP.NET nao.
Grato.

Jothaz
   - 06 mar 2015

Posta o código do CarregaObjeto(dr)!

Edson Hashimoto
   - 06 mar 2015

#Código

        private List<ReclamacaoMotivo> CarregaObjeto(SqlDataReader dr)
        {
            List<ReclamacaoMotivo> lista = new List<ReclamacaoMotivo>();
            GCCustoDao gCCustoDao = new GCCustoDao();
            ObservableCollection<GCCusto> gCCustos = gCCustoDao.Todos();

            DataTable dt = new DataTable();
            dt.Load(dr);

            foreach (DataRow row in dt.Rows)
            {
                ReclamacaoMotivo objeto = new ReclamacaoMotivo();

                objeto.CodMotivo = Int32.Parse(row["CodMotivo"].ToString());
                objeto.Descricao = row["Descricao"].ToString();
                objeto.CentroCustoDestino = gCCustos.Where(x => x.CodCCusto == row["CentroCustoDestino"].ToString()).SingleOrDefault();

                lista.Add(objeto);
            }
            return lista;
        }


O gCCustoDao.Todos()
faz a mesma coisa. Abre uma conexao, faz um select, carrega e fecha.

Jothaz
   - 06 mar 2015

Poderia esclarece quais os campos de "Select * from BLABLABLA"?

E qual a expressão sql que você usa em gCCustoDao.Todos() ?

Se possível post como esta modelado e como as tabelas se relacionam!

Edson Hashimoto
   - 06 mar 2015

Mto obrigado pela atenção. Fazia uns 4 meses q tava pendente esse problema.
Eu uso ASP.NET com ExtJS. ExtJS é um framework de layout. Tem um Controller q carrego todas as Store(arquivo q conecta com o ASP pra conectar com o BD).
Agora nao carrego na hora, faço isso qdo executo realmente o grid.
Obrigado mesmo =]