none
WPF + Enity Framework 6 + SQL SERVER RRS feed

  • Question

  • Bonjour à tous ,

    Je développe une application  WPF avec Entity Framework 6.0. Cette application  ne fait juste que d'affichage des données dans la base des données (SQL SERVER).

    Je souhaite faire un SELECT dans la base et mettre  à jour mon affichage par rapport aux   résultats obtenus  une fois que les données dans une table donnée sont modifiées.

    Comment l'application va connaitre que les données dans la base des données sont modifiées pour qu'elle puisse faire un SELECT pour mettre à jour son affichage?

    J'ai un peu lu les documents concernant SQLDependancy mais j'ai du mal à comprendre sa mise en place et son  mode de fonctionnement.

    Merci beaucoup pour votre aide.

    Cdt,

    mardi 26 avril 2016 12:53

Réponses

  • Bonjour, 

    Créer un site en ASP.NET et SignalR pour notifier aux browsers les modifications répond tout aussi bien au besoins (sauf que visiblement vous n'en avez pas besoins sur plusieurs machines). 

    En revanche SignalR, ne vous sera d'aucune utilité pour savoir quand la données SQL a été mise à jours. 

    En gros, vous serez dans la même impasse qu'avec une application WPF, vous devrez checker les données pour savoir quand elles aurons étés mises à jours. 

    Pour moi, la meilleure façon (plus simple) de faire pour que votre application puisse avoir immédiatement les données rafraîchies est de faire en sorte que l’application 1 communique directement avec l'application 2.

    L'idée serait donc de créer un service de communication sur l'application 2 que l'application 1 appellerai lors des modifications. 

    Encore mieux ce serai un service pur qui gérerait les données (Lecture/écriture) que l'application 1 appellerai lors des opérations d'écritures et qui notifierai (duplex binding par exemple) l'application 2 lors des mises à jours à effectuer. 

    Les applications 1 et 2 n'auraient alors aucune connaissance de la base de données mais ce serait le service en question qui serait la source des données.

    Enfin là je parle de solution un peu plus conséquente tout de même.

    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    jeudi 28 avril 2016 08:05

Toutes les réponses

  • Bonjour,

    Lisez la Remarque de cette page : https://msdn.microsoft.com/fr-fr/library/system.data.sqlclient.sqldependency(v=vs.110).aspx

    Clairement, SqlDependency n'est pas fait pour votre application.

    Ce que vous pouvez faire en revanche, c'est mettre en place un DispatcherTimer qui toutes les x secondes va rafraichir votre page.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mercredi 27 avril 2016 06:50
  • Bonjour,

    Merci beaucoup pour votre réponse.

    En fait , j'ai 2 applications indépendantes  , la première se charge sur la mise  à jour des informations dans la base des données à partir d'un click de bouton , et la 2ème c'est juste pour l'affichage. La première application est déployé sur plusieurs machines et la 2ème sur une autre machine. l'objectif est  que  l'application 2  fait son affichage instantanément  après la mise à jour des données effectuées par les applications 1.

    Et si on utilise dispatcherTimer, dans ce cas l'intervalle c'est à l'ordre de milliseconde pour avoir un résultat instantané  , et ça ne pose pas de problème côté performance sur l'application 2 ?

    ET j'ai vu aussi des documents sur les signalR , est ce que c'est possible de faire l'application 2 avec ASP NET + signalR??

    Merci de votre réponse.

    jeudi 28 avril 2016 06:33
  • Bonjour, 

    Créer un site en ASP.NET et SignalR pour notifier aux browsers les modifications répond tout aussi bien au besoins (sauf que visiblement vous n'en avez pas besoins sur plusieurs machines). 

    En revanche SignalR, ne vous sera d'aucune utilité pour savoir quand la données SQL a été mise à jours. 

    En gros, vous serez dans la même impasse qu'avec une application WPF, vous devrez checker les données pour savoir quand elles aurons étés mises à jours. 

    Pour moi, la meilleure façon (plus simple) de faire pour que votre application puisse avoir immédiatement les données rafraîchies est de faire en sorte que l’application 1 communique directement avec l'application 2.

    L'idée serait donc de créer un service de communication sur l'application 2 que l'application 1 appellerai lors des modifications. 

    Encore mieux ce serai un service pur qui gérerait les données (Lecture/écriture) que l'application 1 appellerai lors des opérations d'écritures et qui notifierai (duplex binding par exemple) l'application 2 lors des mises à jours à effectuer. 

    Les applications 1 et 2 n'auraient alors aucune connaissance de la base de données mais ce serait le service en question qui serait la source des données.

    Enfin là je parle de solution un peu plus conséquente tout de même.

    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    jeudi 28 avril 2016 08:05
  • Ah ok merci beaucoup,

    Je comprend bien votre idée, et comment les applications 1 et 2 se communiquent a travers ce service ? ces applications sont sur des différentes machines. Vous pouvez un peu me guider sur des tutos ou des sources ??

    Merci :)

    jeudi 28 avril 2016 08:38
  • Bonjour, 

    Regardez vers les services WCF entre autres : 

    https://msdn.microsoft.com/fr-fr/library/ms733103(v=vs.110).aspx

    Cordialement,


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    jeudi 28 avril 2016 09:43
  • Merci beaucoup,

    En fait j'ai du mal a comprendre pratiquement la mise en place.

    Cdt,

    jeudi 28 avril 2016 13:32
  • OK, 

    Commencez par une petite procédure pas à pas.

    https://msdn.microsoft.com/fr-fr/library/bb386386.aspx

    Cordialement,  


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    jeudi 28 avril 2016 13:48
  • bonjour

    OK SUPER merci,

    Cdt,

    lundi 2 mai 2016 07:26