Sqldependency -处理过程中添加的记录

本文关键字:记录 添加 过程中 处理 Sqldependency | 更新日期: 2023-09-27 18:01:36

我有一个关于sql依赖的问题。假设我的应用程序在底层查询数据更改时收到通知,我计划从表中选择数据,处理它并重新订阅/启动依赖项。如果处理需要1-2分钟,并且在平均时间内,可能会在此处理时间内添加一些数据。不确定该数据将如何得到通知,或者我是否必须等待下一个更改发生,这可能是几分钟到几小时?

下面是我的示例代码让我知道,如果我错过了什么

代码:

    private void LoadNotifications()
    {
        DataTable dt = new DataTable();
        using (SqlCommand command = new SqlCommand("SELECT ID FROM dbo.NOTIFICATIONS", m_sqlConn))
        {
            command.Notification = null;
            SqlDependency dependency = new SqlDependency(command);
            dependency.OnChange += new OnChangeEventHandler(OnDependencyChange);
            if (m_sqlConn.State == ConnectionState.Closed)
            {
                m_sqlConn.Open();
            }

            //using (SqlDataReader reader = command.ExecuteReader())
            //{
            //    if (reader.HasRows)
            //    {
                    //lETS ASSUME THIS TAKES 2-3 MINUTES
            //    }
            //}
        }
    }
    private void OnDependencyChange(object sender, SqlNotificationEventArgs e)
    {
        SqlDependency dependency = sender as SqlDependency;
        dependency.OnChange -= OnDependencyChange;
        LoadNotifications();
    }

Sqldependency -处理过程中添加的记录

你所描述的是数据更改和应用通知的典型非同步性质。简而言之,变化可能会不断发生,你的应用不会实时看到它们的发生。此外,无论你的前端应用是否打开,这些变化都可能发生。是否需要查看正在更改的数据,以便在前端应用程序上做出决定,或者您是否需要查看其他用户所做的数据更改。实现这两种情况的一种方法是,使用由底层触发器填充的表形式的更改队列。然后编写前端应用程序,定期从该表中读取数据,并将其标记为已读。这将允许您从应用程序视图中分离数据更改,并可能看到一些处理性能的提高。