none
Como actualizo una consulta de LinqToSql desde otra ventana? RRS feed

  • Pregunta

  • Voy a explicar a grandes razgos lo que deceo... En una ventana principal de WPF tengo un combobox donde muestro una lista de Empleados, la lista de emplados hace Bind a mi clase Empleado. En mi clase empleado tengo porsupuesto una propiedad con la que expongo la lista obviamente es un ObservableCollection, tengo implementado su INotifyPropertyChanged., y tengo una funcion que se llama ActualzaPropiedad la cual puedo llamar desde mi ventana principal para mostrar los cambios en el combobox sin problemas. Los datos se obtienen desde SQL asi que estoy utilizando un Query en LinqToSQL. Todo marcha perfecto hasta aqui, el punto es que quiero tener un boton en mi pantalla principal el cual llame a otra ventana con la cual me permitira agregar nuevos empleados a la tabla SQL. El problema radica en como nofificar que ahora hemos agregado nuevos empleados y porlotanto se debera ejectuar la funcion ActualizaPropiedad... Tengo entendido que se puede hacer una subscripcion a SQL pero esto que problemas traeria en el Performance? hay alguna manera mas rapida o eficiente de hacerlo?
    martes, 10 de enero de 2012 15:59

Todas las respuestas

  • Hola Arelly.

    ¿Usas LinqToSql o EntityFramework?.

    En cualquier caso, la idea principal, es que si haces uso de mvvm, deberias de tener una clase con el viewmodel y puede ser la que contenga el contexto de datos, la idea es que exista este unico contexto entre las 2 ventanas, cuando abras la segunda ventana, asociale el contexto de datos y lo tendrias todo resuelto.

    ¿haces consultas directas a la BBDD o usas un contexto de datos?


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    martes, 10 de enero de 2012 19:50
  • Estoy usando LinqToSql para realizar las consultas y tener mis tablas como clases.

    Como lo tengo ahorita es una Clase que con la que Muestro mis propiedades, Procedimiento para InsertarDatos en mi tabla y  Procedimiento para LeerDatos de mi tabla y asignarlos a la lista. Creo yo que el problema es que de esta forma tengo que usar una instancia para la Ventana 1 y otra para la Ventana 2 de mi clase.

    Si habia visto que erea mas o menos posible con MVVM =s el problema es que no estoy muy familiarizada con este o si ya lo estoy usando sin saber s=

    martes, 10 de enero de 2012 20:26
  • Hola Arelly.

    segun lo tienes montado, yo creo que lo mas facil que puedes implementar es algun tipo de flag para indicar el estado.

    Puedes crearte una variable estatica en la clase principal, la cual uses para establecer el estado de agregacion, de modo que desde cualquier otra clase se pueda acceder a esta variable estatica para comprobar su valor.

    Digo una variable estatica por que se puede acceder sin crear una instancia de una clase y te sera lo mas facil de implementar, aunque posiblemente no sea lo mejor en arquitectura.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    jueves, 12 de enero de 2012 7:23
  • Ok finalmente pude resolver este problema utilizando en la pantalla de agregar Empleados un Public Shared Event (de VB) para que al agregar un empleado me lanzara dicho evento. Lo siguiente fue agregar un Handler en mi pantalla principal para que se subscribiera al evento y asi saber cuando habia sucedido... muy similar a la idea que me diste al final = D

    Espero que almenos sea una opcion estable ya que se me hizo sencillo de implementar, aunque por lo que e visto MVVM va mucho mejor pero por lo pronto no tenia otra salida =S

    Gracias!!

     

    • Propuesto como respuesta David_González jueves, 19 de enero de 2012 7:18
    miércoles, 18 de enero de 2012 21:18