Usuário com melhor resposta
Consulta gerando erro: Object reference not set to an instance of an objetct

Pergunta
-
Dim resultado = From UF In UFContexto.UFSet Join Pa In UFContexto.PaisSet On UF.PaisPaisId Equals Pa.PaisId Select UF.UFId, UF.Nome, UF.Sigla, Pa.NomePais ou Dim pConsulta = From p In UFContexto.UFSet Select p.UFId, p.Nome, p.Sigla, p.Pais.NomePais
Dessa formas consigo o resultado que espero, porem gera esse erro!!!
Dessa outra forma não gera o erro, porem eu quero o nome do campo da outra tabela e não o id.
Dim pConsulta = From p In UFContexto.UFSet.include("Pais")
Respostas
-
Olá Gusta,
Veja se isto ajuda:
Dim pConsulta = From p In UFContexto.UFSet Where p.Pais IsNot Nothing _ Select p.UFId, p.Nome, p.Sigla, p.Pais.NomePais
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Marcado como Resposta Gusta24131 sexta-feira, 10 de fevereiro de 2012 16:04
Todas as Respostas
-
Olá Gusta,
Veja se isto ajuda:
Dim pConsulta = From p In UFContexto.UFSet Where p.Pais IsNot Nothing _ Select p.UFId, p.Nome, p.Sigla, p.Pais.NomePais
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Marcado como Resposta Gusta24131 sexta-feira, 10 de fevereiro de 2012 16:04
-
-
Olá Gusta,
Na verdade, o LINQ internamente fará um laço de repetição lendo todos os itens.
Em algum momento, ele encontrou uma instância de objeto cuja propriedade "Pais" estava nula.
Diante disso, como vc estava consultando uma propriedade de uma instância nula de "Pais" ele disparou a mensagem de erro.
Desta forma, com a clausula Where, acabamos filtrando todos os itens que não tem um "Pais" associado, e trabalhamos apenas com aqueles que possuem uma instância válida de "Pais".
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique -
Fernando,
Compreendi. mas ainda estou empacando com o mesmo problema. heheheh No caso em questao a Tabela UF tem Relacionamento com a PAis.
Complicando um Pouco mais a Tabela Cidades, tem relacionamto com Clientes, Colaboradores e UF. Tentei Usar a mesma expressao com que vc me passou com algumas modifica~coes e n"ao resolveu. Teria que fazer um isnot nothing para cada relacionamento?
Dim resultado = From p In Ctx.CidadesSet Where p.UF IsNot Nothing Select p.CidadeId, p.Nome, p.UF.Sigla, p.UF.Pais.NomePais
Desde ja fico muito agradecido!
abs
-
Olá Gusta,
Sim, vc terá de fazer isso com todos os relacionamentos nos quais vc acessar propriedades durante a sua consulta LINQ.
Poste sua expressão que eu lhe ajudo.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique -
Desde já, muito obrigado!!!
Try ' Dim resultado = From c In Ctx.CidadesSet Join u In Ctx.UFSet On c.UFUFId Equals u.UFId Join p In Ctx.PaisSet On p.PaisId Equals u.PaisPaisId Where c.UF IsNot Nothing Where c.Clientes IsNot Nothing Select c.CidadeId, c.Nome, u.Sigla, p.NomePais ' Dim resultado = From p In Ctx.CidadesSet Where p.UF IsNot Nothing Select p.CidadeId, p.Nome, p.UF.Sigla, p.UF.Pais.NomePais Dim resultado = From Cidade In Ctx.CidadesSet Select Cidade.CidadeId, Cidade.Nome, Cidade.UF, Cidade.UF.PaisPaisId frmCidades.gdvCidades.DataSource = resultado frmCidades.gdvCidades.Columns("CidadeId").HeaderText = "Código" frmCidades.gdvCidades.Columns("Nome").HeaderText = "Cidade" frmCidades.gdvCidades.Columns("UF").HeaderText = "Estado" frmCidades.gdvCidades.Columns("NomePais").HeaderText = "País" frmCidades.gdvCidades.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells Catch ex As Exception MsgBox("Erro : " & ex.Message) End Try End Sub