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 =]