SqlDependency OnChange Pas De Tir

C'est la première fois que j'ai jamais besoin d'utiliser un SqlDependency donc je suis en espérant que ses une erreur stupide que j'ai fait.

Le problème, je vais avoir, c'est que le OnChanged événement ne se déclenche pas lors de la table sql changements. Pas d'erreur ou quoi que ce soit simplement il n'a pas le feu.

Voici le code

public class SqlWatcher
{
    private const string SqlConnectionString = "Data Source = CN-PC08\\DEV; Initial Catalog=DEP; User = sa; Password=******";

    public SqlWatcher()
    {
        SqlClientPermission perm = new SqlClientPermission(System.Security.Permissions.PermissionState.Unrestricted);
        perm.Demand();

        SqlCommand cmd = new SqlCommand("SELECT [DataAvaliable], [RowNumber] FROM [dbo].[Trigger]", new SqlConnection(SqlConnectionString));
        SqlDependency sqlDependency = new SqlDependency(cmd);
        sqlDependency.OnChange += On_SqlBitChanged;
    }

    private void On_SqlBitChanged(object sender, SqlNotificationEventArgs sqlNotificationEventArgs)
    {
        SqlDependency dependency = (SqlDependency)sender;
        dependency.OnChange -= On_SqlBitChanged;

        //Fire the event
        if (NewMessage != null)
        {
            NewMessage(this, new EventArgs());
        }
    }

    public void Start()
    {
        SqlDependency.Start(SqlConnectionString);
    }

    public void Stop()
    {
        SqlDependency.Stop(SqlConnectionString);
    }

    public event EventHandler NewMessage;

Et dans ma fenêtre principale, j'ai ce

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        try
        {
            SqlWatcher sqlWatcher = new SqlWatcher();
            sqlWatcher.Start();
            sqlWatcher.NewMessage += On_NewMessage;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

    private void On_NewMessage(object sender, EventArgs eventArgs)
    {
        MessageBox.Show("Message Received");
    }
}

De sorte que le comportement attendu est que si je lance la suite de sqlQuery un messageBox sera affiché en disant: "Message Reçu"

INSERT INTO [DEP].[dbo].[Trigger] Values(0,3)

Quelqu'un pourrait-il me donner un indice sur ce qu'il faut vérifier/changer?

Je suis conscient que seul un sous-ensemble de fonctions Sql peut être utilisé dans les dépendances, mais je ne pense pas que je suis en train de faire quelque chose de fantaisie ici.

Pense que quelqu'un essaie de trouver une solution de contournement pour sqldependency, devraient utiliser sqldependencyEx. Connectivité facile étapes peuvent être trouvés ici. github.com/dyatchenko/ServiceBrokerListener

OriginalL'auteur Nick Williams | 2013-03-22