SqlDependency更改只适用于一次更改



我正在做一个项目,我需要在我们的一个数据库表上保持监视器,对于任何新记录插入,我需要在客户端上更新相同的。

为此,我使用SqlDependency来订阅服务代理。也使用SignalR来立即更新客户端。

我的问题是:我的订阅只对一次更改有效,一旦我得到一个更新,不知道如何,我的订阅被自动删除。

下面是订阅数据库进行更改的代码:

SqlDependency.Start(connectionString);
SubScribeForAttendance();
SqlDependency.Stop(connectionString);

订阅功能:

public void SubScribeForAttendance()
{
    // We have selected the entire table as the command, so SQL Server executes this script and sees if there is a change in the result, raise the event
    string commandText = @"Select bnr,knrhex From dbo.TableName where bnr > SomeId";
    // Start the SQL Dependency
    SqlDependency.Start(connectionString);
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlCommand command = new SqlCommand(commandText, connection))
        {
            connection.Open();
            var sqlDependency = new SqlDependency(command);
            sqlDependency.OnChange += Dependency_OnBookingChange;
            // NOTE: You have to execute the command, or the notification will never fire.
            using (command.ExecuteReader())
            {
            }
        }
    }
}

每次触发通知时都必须重新注册sql依赖项,sql依赖项只注册一个通知。

在Dependency_OnBookingChange的最后一次调用SubScribeForAttendance()重新注册sql依赖

我从这个链接找到了这个解决方案

相关内容

  • 没有找到相关文章

最新更新