Tabela retornando vallores repeditos

23/12/2014

Olá galera, possuo uma action retornando os dados de uma tabela, porém os dados estão retornando duplicados. E cada atualização na página eles mudam( porém repetido).

Ex: [img:descricao=Tabela]http://arquivo.devmedia.com.br/forum/imagem/397347-20141223-152221.png[/img]

Ai quando eu atualizo o navegador, os dados mudam, porém vêm repetido da mesma forma. Sempre retornando os mesmos dados, repetidos, a cada refresh.

Segue meu método, mas analisarem.

UsuarioController:

 public ActionResult Dependente()
        {
            var dependentes = dependenteRepository.Lista.Where(x => x.slogin == autenticacaoProvider.UsuarioAutenticado.Login);
            return View(dependentes);
        }



Método Lista:
public IQueryable<Entities.Dependente> Lista
        {
            get { return context.Dependentes.AsQueryable(); }
        }




Se alguém puder me ajudar, eu agradeço.

Randrade

Melhor resposta

07/01/2015

Ah, então achamos o problema.
Auto-incremento em view, não dá. Mas talvez fosse possa usar a função ROW_NUMBER do SQL Server para trazer uma coluna com números sequenciais.
Mas de toda forma, reveja esse seu filtro, pois não deveria ser necessário complicar tanto assim para fazer uma simples consulta. Reveja a estrutura da sua view.

Joel Rodrigues

Currículo
Responder Citar

Outras Respostas

23/12/2014

Randrade

Desculpe a escrita to título, estava com pressa ao digitar... kkkk
Responder Citar

23/12/2014

Jothaz

Ih camarada, beleza?

Qual a estrutura da tabela Dependentes?
Responder Citar

23/12/2014

Randrade

Beleza sim brother.

Bom, segue uma imagem, pois estou sem acesso a aplicação neste momento.

[img]http://arquivo.devmedia.com.br/forum/imagem/397347-20141223-165334.png[/img]



Neste caso, ao invés de fazer uma busca pelo ID do usuário logado, eu estou realizando a busca pelo login, pois não terá 2 logins semelhantes.
Responder Citar

26/12/2014

Joel Rodrigues Currículo

Como está sua view?
Responder Citar

29/12/2014

Randrade

Segue o código da view, como você pediu Joel:

@model IEnumerable<PortalRH.DomainModel.Entities.Dependente>

@{
    ViewBag.Title = "Dependente";
}

<h2>Dependentes</h2>
<hr/>
<div class=" table">
    <table>
        <tr>
            <th>
                Nome
            </th>
            <td>
            <th>
                Grau de Dependência
            </th>
            <td>
            <th>
                CPF
            </th>

        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @item.Nome_dependente
                </td>
                <td></td><td></td><td></td><td></td>
                <td>
                    @item.DsGrauDependencia
                </td>
                <td></td><td></td><td></td><td></td>
                <td>
                    @item.NRCPF
                </td>
            </tr>
        }

    </table>
</div>



No Debug, eu vejo que ele está fazendo o foreach corretamente, e me retorna a quantidade exata que é para retornar. Porém a cada "loop", os valores não mudam.

Resumindo, me traz a quantidade correta, porém com os valores repetidos.
Responder Citar

29/12/2014

Joel Rodrigues Currículo

Na action Dependente, coloque um breakpoint na linha onde está o return e veja se a variável dependentes está contendo os itens corretos.
Responder Citar

29/12/2014

Randrade

Já havia feito isto.

Ela está percorrendo a quantidade de vezes correta( quantidade de dados cadastrados), porém o valor dos campos continuam o mesmo.

Exemplo: Possuo na tabela 3 dados, Joao, Maria e Antonio.
Ele percorre a tabela 3x e me trás (Joao, Joao, Joao), ai eu dou um reflesh no navegador, e vem (Maria, Maria, Maria) e a cada reflesh, altera o valor, ams sempre os mesmos.
Responder Citar

30/12/2014

Randrade

Ai galera, ainda estou com o mesmo problema, alguém saberia como resolver?
Responder Citar

30/12/2014

Joel Rodrigues Currículo

Temos que identificar a origem do erro. Nesta linha abaixo, a variável dependentes contém os itens corretos, ou já aí ela contém os itens repetidos?
var dependentes = dependenteRepository.Lista.Where(x => x.slogin == autenticacaoProvider.UsuarioAutenticado.Login);
Responder Citar

05/01/2015

Randrade

Joel, ao debugar, nesta linha, especificamente, eu só consigo ver a consulta em si.

Mas colocanco um breakponint ai, na view eu consigo ver os dados.

Ele faz o foreach, a quantidade de vezes dos dados existentes corretamente, porém me retorna apenas o mesmo repetido. tanto no debug ou na página em si.
Responder Citar

05/01/2015

Randrade

Tentei usando Contains, porém continua a mesma coisa;

 public ActionResult Dependente()
        {
            var dependentes = dependenteRepository.Lista.Where(x => x.slogin.Contains( autenticacaoProvider.UsuarioAutenticado.Login)).ToList();
            return View(dependentes);
            
        }




Estou usando um IQueryable para retornar os dados. Está correto isto mesmo?

Estou buscando em vários sites, porém não estou conseguindo achar a solução.
Responder Citar

07/01/2015

Joel Rodrigues Currículo

A questão é saber se essa lista de dependentes está sendo preenchida corretamente, e o problema está entre esse ponto e a view, ou se essa consulta aí já está retornando os valores duplicados, entende?
Tente colocar, antes do return, algo como Console.Write, ou dar um Quick Watch nessa variável para ver os itens dela.
Responder Citar

07/01/2015

Randrade

Usei o Console Write aqui.

Colocando para imprimir os dados, mostra todos repetidos. Porém coloquei um .Count, e me retornou o valor correto.
Pelo jeito, o problema está no meu método.
Poderia ser eu buscar por Login e não por ID?
Responder Citar

07/01/2015

Randrade

Eu acho que encontrei o problema, mas não a solução!

Eu estou trabalhando com uma view, e nela não possui uma coluna unica( Chave Primária).
Para a utilização do EF, eu tive que colocar a chave primária "CDPESSOA" que é da tabela Usuário como chave primária.

Existe alguma forma de adicionar algum campo autoencremente na view, ou algo do tipo?
Responder Citar

08/01/2015

Randrade

Vou verificar aqui. Assim que concluir, posto a solução.
Responder Citar