none
Refresh não está funcionando RRS feed

  • Pergunta

  • Olá amigos,

    Tenho duas telas usando LINQ, uma filha da outra. A primeira utiliza uma view VW_PEDIDO e a segunda utiliza uma view VW_PEDIDO2 (ambas utilizam BindingSource). As duas tem mais ou menos os mesmos campos. O problema é o seguinte:

    Na segunda tela eu altero dados via LINQ na VW_PEDIDO2. Quando fecho essa tela e retorno para a primeira tela, os dados da view VW_PEDIDO não estão atualizados. Perfeito. O problema é que mesmo que eu re-execute o comando LINQ que carrega a VW_PEDIDO, os dados não são atualizados. Os dados só são atualizados quando eu fecho a tela e abro de novo.

    Como posso resolver isso?

    Obrigado

    André
    quinta-feira, 16 de julho de 2009 20:17

Respostas

  • Rui,

    Achei o problema.

    Quando o DataContext está com a opção ObjectTrackingEnabled setada para True (Default), ele usa o cache para listar os dados.

    Setando essa opção para false resolve o problema.

    Lembrando que quando seta essa opção para false, o context fica read-only. Portanto, deve-se usar um context especifico para leitura de dados

    []s
    sexta-feira, 17 de julho de 2009 14:59

Todas as Respostas

  • Quando vc re-executa a cosulta da view VW_PEDIDO vc seta a propriedade DataSource do seu BindingSource novamente com o resulta da consulta ?
    Se não funciona de um jeito, tente de outro totalmente diferente ^_^
    quinta-feira, 16 de julho de 2009 21:29
    Moderador
  • Seto sim.... mas não resolve. Só resolve quando fecho o form e abro de novo. Parece que ele utiliza um cache ao invés de realizar a consulta diretamente no banco

    []s
    sexta-feira, 17 de julho de 2009 13:40
  • onde vc instancia o seu DataContext ? no formulario ou nos metodos ?

    esperimenta criar um metodo para a carga no formulario e centralizar tudo nele....


    private void CarregarDados() {
         using (var context = new SeuDataContex()) {
               gridPedidos.DataSource = context.VW_PEDIDOs.ToArray();
         }
    }

    e usar esse metodo no Form_Load, apos o metodo de gravação e etc...

    o importante ai... é usar uma instancia nova do DataContext toda a carga de dados... para evitar esse "cache" que acontecendo (o que é estranho de ocorrer em um windows forms)


    Se não funciona de um jeito, tente de outro totalmente diferente ^_^
    sexta-feira, 17 de julho de 2009 14:09
    Moderador
  • Rui,

    Achei o problema.

    Quando o DataContext está com a opção ObjectTrackingEnabled setada para True (Default), ele usa o cache para listar os dados.

    Setando essa opção para false resolve o problema.

    Lembrando que quando seta essa opção para false, o context fica read-only. Portanto, deve-se usar um context especifico para leitura de dados

    []s
    sexta-feira, 17 de julho de 2009 14:59
  • Rui,

    Achei o problema.

    Quando o DataContext está com a opção ObjectTrackingEnabled setada para True (Default), ele usa o cache para listar os dados.

    Setando essa opção para false resolve o problema.

    Lembrando que quando seta essa opção para false, o context fica read-only. Portanto, deve-se usar um context especifico para leitura de dados

    []s

    Faz sentido... mesmo pq View deveria ser readonly mesmo
    Se não funciona de um jeito, tente de outro totalmente diferente ^_^
    sexta-feira, 17 de julho de 2009 15:32
    Moderador