Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlDependency.OnChange不会启动_C#_Sql Server_Sqldependency - Fatal编程技术网

C# SqlDependency.OnChange不会启动

C# SqlDependency.OnChange不会启动,c#,sql-server,sqldependency,C#,Sql Server,Sqldependency,我正在申请我的大学项目。在数据库发生更改后,应用程序应通过电子邮件发送某种形式的通知 有一个数据库的.mdf文件,我用localdb连接到它,用dataset表和SQLDataAdapters查看和编辑数据,如果这有关系的话,我不知道。我正在尝试设置SqlDependency,以便它在表上执行新标志的检查,以便它可以发送有关带有这些标志的行的电子邮件 问题是我无法使sqlDependency.OnChange事件触发,Service Broker已启用。启动应用程序后,我启动SqlDepende

我正在申请我的大学项目。在数据库发生更改后,应用程序应通过电子邮件发送某种形式的通知

有一个数据库的.mdf文件,我用localdb连接到它,用dataset表和SQLDataAdapters查看和编辑数据,如果这有关系的话,我不知道。我正在尝试设置SqlDependency,以便它在表上执行新标志的检查,以便它可以发送有关带有这些标志的行的电子邮件

问题是我无法使sqlDependency.OnChange事件触发,Service Broker已启用。启动应用程序后,我启动SqlDependency,然后在我的一个SqlAdapter方法中编辑和保存数据,即mdf文件中数据库中的数据更改,但没有事件触发器。我尝试了多个教程,但似乎没有一个适合我。代码如下:

 public void StartWatching()
    {
        SqlDependency.Stop(con.ConnectionString);
        SqlDependency.Start(con.ConnectionString);
        ExecuteWatchingQuery();
    }

    private void ExecuteWatchingQuery()
    {
        using (SqlConnection connection = new SqlConnection(con.ConnectionString))
        {
            connection.Open();
            using (var command = new SqlCommand(
                "select [id], [subject] from dbo.lots", connection))
            {
                var sqlDependency = new SqlDependency(command);
                sqlDependency.OnChange += new OnChangeEventHandler(OnDatabaseChange);
                SqlDataReader reader = command.ExecuteReader();
                if (reader.HasRows)
                {
                    Log_Text.AppendText("Watching... \n");
                }
                else
                {
                    Log_Text.AppendText("No rows found.");
                }
            }
        }
    }

    private void OnDatabaseChange(object sender, SqlNotificationEventArgs args)
    {[enter image description here][1]
        SqlNotificationInfo info = args.Info;
        if (SqlNotificationInfo.Insert.Equals(info)
            || SqlNotificationInfo.Update.Equals(info)
            || SqlNotificationInfo.Delete.Equals(info))
        {
            Log_Text.AppendText("Saw changes: \n");
            Watching();
        }
        ExecuteWatchingQuery();
    }
资料来源:


[1] :表格问题在于,编辑和监控都是在同一个应用程序中完成的,我不确定是否在同一个连接上。我将应用程序分为两个,一个用于数据库编辑,另一个用于监控的控制台应用程序,所有应用程序都开始工作。

一切看起来都正常。返回什么以下查询选择从sys.databases(其中name='database\u name')启用了\u broker\u?启用了broker,查询返回1。我将我的应用程序移动到服务器上以摆脱localdb,但仍然没有响应。