none
REFRESCAR LOS DATOS AL CONSULTAR RRS feed

  • Pregunta

  • Hola,

         me pasa lo siguiente:

         tengo creada una aplicación con PRISM 4, el case es que cargo una vista donde me aparecen una serie de datos que consulto desde la BBDD a traves de entity framework. Pues bien, si hago un cambio en la  tabla y vuelvo a realizar la misma petición no actualiza los cambios que yo he realizado. Estoy utilizando entidades POCO, no sé si eso tiene algo que ver y además tengo un contenedor Unity en el que registro el repositorio que me realiza la consulta.

        Alguien me puede ayudar, gracias.

    miércoles, 23 de mayo de 2012 6:06

Todas las respuestas

  • si hago un cambio en la  tabla y vuelvo a realizar la misma petición no actualiza los cambios que yo he realizado.

    estas suando un ObservableCollection para asignar la lista de datos al control mediante Binding ?

    has recordado realizar realizar el OnPropertyChange("NombrePropiedad")

    para informar que los datos cambiaron


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 23 de mayo de 2012 14:08
  • Hola Leandro, 

        incluso hago la comprobación antes de que se realice el binding comprobando directamente los datos que me devuelve el método que realiza la consulta.

    un saludo.

    miércoles, 23 de mayo de 2012 20:42
  • Hola.

    Pero no entiendo bien :S Los datos se guardan en la base de datos, o no?...

    Podrias facilitar algo de codigo para ayudarte ?

    Saludos.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes

    viernes, 25 de mayo de 2012 16:42
  • public tblParamsConfig ObtenerParametroPorCodigo(string codigo)
    {
               return ((IQueryableUnitOfWork)UnitOfWork).CreateSet<Parametro>()
                                                        .Where(c => c.Codigo == codigo)
                                                        .SingleOrDefault();
    }


    Pues sí la verdad es que no me he explicado muy bien, a ver si ahora lo hago mejor. Resulta que yo ejecuta mi programa y realizo los siguientes pasos tengo una tabla de parámetros donde guardo Codigo, Descripcion, Valor y realizo una serie de operaciones la cosa sería algo así:

        
    Parametro param = repositorio.ObtenerParametroPorCodigo("250");
    double valorParam = 0;
    if (param.ValorNUM.HasValue)
    {
      valorParam = param.ValorNUM.Value;
    }
    
    ....
    
    double resultado = cantidad*valorParametro/100;
    
    

    Eso es lo que hace el programa, supongamos que tengo para el valor del parámetro 15.

    Ahora cojo el me abro el SQL Server Management Studio y ejecuto la siguiente sentencia SQL.

    Update parametrosset valorParametro = 12 where codigo = "250"


    si vuelvoa ejecutar la instrucción

    Parametro param = repositorio.ObtenerParametroPorCodigo("250");

    el valor del parámetro sigue siengo 15 y no 12 que es lo que esperaba. Tengo que cerrar la aplicación y volver a entrar para refrescar el valor.

    El método ObtenerValorParmetroPorCodigo contiene esto

    public Parametro ObtenerParametroPorCodigo(string codigo)
    {
               return ((IQueryableUnitOfWork)UnitOfWork).CreateSet<Parametro>()
                                                        .Where(c => c.Codigo == codigo)
                                                        .SingleOrDefault();
    }

    He estado investigando un poco y el tema tiene que ver con las opciones establecidas para la propiedad MergeOptions, pero la verdad que ando un poco perdido por las plantillas T4 que generan el código.

    Espero se entienda mejor con esta explicación, gracias.



    viernes, 25 de mayo de 2012 19:48
  • jejejeje... este fué el motivo por el cual aborte usar Entity Framework,

    en lo personal, poner en producción esto que no tiene esta opción a un simple llamado de una función me parece que no pensaron que la aplicación podria usarse multi-usuarios.

    pero bien...

    la solución es obtener el ObjectContext de tu DbContext y usar el metodo Refresh, yo crei que ha estas alturas ya estaria resuelto, pero parece que aun no.

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    lunes, 28 de mayo de 2012 19:40
  • Hola.

    Diego CD, puedes mostrar el codigo donde actualizas la informacion?, o sea, con EF, porque recuerda que para realizar el update debes agregar el objeto al contexto y salvar los cambios, sino no se refleja en la DB.

    Saludos.

    jueves, 31 de mayo de 2012 12:02