2010-07-29 8 views
17

Desidero ascoltare le modifiche ai dati in un database SQL Server da C#. Speravo che ci fosse una specie di ascoltatore che potrei usare per determinare se i dati che ho sono stantii. Nonostante sia uno scenario abbastanza comune non riesco a trovare nessuna soluzione che non sia semplicemente il polling del database.Listener di modifica del database di SQL C#

Io uso LINQ to SQL per accedere ai dati e, quindi, avere un oggettoDataContext, speravo ho potuto ascoltare per un on dati modificati evento, ma io non riesco a trovarne uno.

Apprezzo che si tratti di una barriera non banale (dal metodo C# al DB di SQL Server), la ragione per cui mi aspettavo che questo fosse un problema risolto è che è un requisito comune per le GUI. Se non è possibile ascoltare gli aggiornamenti su come mantenere aggiornati i dati visualizzati in una GUI (quando è supportato da un'origine dati di SQL Server).

Anche se questo non è per il lavoro della GUI, mi aspettavo di adattare qualcosa da quel regno.

C'è un modo per iscriversi agli eventi di modifica del database di SQL Server in C#?

risposta

5

Si sta cercando il SqlDependency class, che consente di ascoltare le modifiche al set di risultati di una query SQL.

3

DataContext non offre alcun tipo di funzionalità listener con SQL Server. La soluzione migliore è creare un'applicazione di polling o anche un thread separato che esegue periodicamente il polling del database per le modifiche ed esporre un evento che l'applicazione principale può ascoltare.

0

Vorrei utilizzare una tabella con una singola riga nel db per catalogare gli ultimi eventi aggiornati, inseriti o eliminati e quindi creare trigger su ogni tabella di importanza per aggiornare questa tabella e quindi eseguire il polling di questa tabella per le modifiche.

+0

Questo non funzionerebbe con i DB a cambio rapido, perché sarebbe necessario monitorare costantemente la tabella e, peggio ancora, non è possibile garantire che non si saltino le modifiche tra i controlli. – PedroC88

Problemi correlati