Я хочу прислушаться к изменениям в данных в базе данных SQL Server от C#. Я надеялся, что будет своего рода слушатель, которого я мог использовать, чтобы определить, являются ли данные, которые я имею, устаревшими. Несмотря на то, чтобы быть довольно общим сценарием я не могу найти решения, которые не должны просто опрашивать базу данных.
Я использую Linq-SQL, чтобы получить доступ к данным и следовательно сделать, чтобы DataContext возразил, я надеялся, что мог прислушаться на измененном событии данных, но я, может казаться, не нахожу тот.
Я ценю, что это - нетривиальный барьер (От метода C# до SQL Server DB), причина, я ожидал, что это, чтобы быть решенной проблемой - то, что это - общее требование для графический интерфейсов пользователя. Если не возможно Прислушаться к обновлениям, как Вам сохраняют Данные отображенными в GUI новый (Когда это поддерживается источником данных SQL Server).
Хотя это не для работы GUI, я ожидал адаптировать что-то от той области.
Существует ли способ подписаться на события изменения базы данных SQL Server в C#?
Я никогда раньше ими не пользовался, но пробовали ли вы уведомления о событиях SQL Server? См. Эту статью: Начало работы с уведомлениями о событиях SQL Server
Вы ищете класс SqlDependency
, который позволяет прослушивать изменения в наборе результатов SQL-запроса.
DataContext не предложит вам никакой функциональности слушателя с SQL Server. Лучше всего создать приложение для опроса или даже отдельный поток, который будет периодически опрашивать базу данных на предмет изменений и выставлять событие, которое сможет прослушать ваше основное приложение.
Я бы использовал таблицу с одной строкой в базе данных для каталогизации последних обновленных, вставленных или удаленных событий, а затем создал бы триггеры для каждой важной таблицы для обновления этой таблицы, а затем опросил бы эту таблицу на предмет изменений.
Если вы используете SQL Server 2008, имеется довольно удобная встроенная функция отслеживания измененных данных.
http://msdn.microsoft.com/en-us/library/bb522489.aspx
Вы можете читать данные CDC.