Как получить только запись, которая изменилась в БД, используя SqlDependency в приложении Asp.Net MVC - PullRequest
0 голосов
/ 21 сентября 2019

Я использую зависимость SQL в своем приложении (ASP.NET MVC), чтобы получать уведомления об изменении записи в моей базе данных (SQL Server).Я следую этой статье Уведомления об обновлениях базы данных SignalR в ASP.NET MVC с использованием SQL-зависимости Однако в статье не показано, как извлечь только запись (сущность), которая изменилась в базе данных .Часть, где я должен внести изменения:

public class MessagesRepository
{
        readonly string _connString = 
        ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

        public IEnumerable<Messages> GetAllMessages()
        {
            var messages = new List<Messages>();
            using (var connection = new SqlConnection(_connString))
            {
                connection.Open();
                using (var command = new SqlCommand(@"SELECT [MessageID], 
                [Message], [EmptyMessage], [Date] FROM [dbo].[Messages]", connection))
                {
                    command.Notification = null;

                    var dependency = new SqlDependency(command);
                    dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);

                    if (connection.State == ConnectionState.Closed)
                        connection.Open();

                    var reader = command.ExecuteReader();

                    while (reader.Read())
                    {
                        messages.Add(item: new Messages 
                        { MessageID = (int)reader["MessageID"], 
                        Message = (string)reader["Message"], 
                        EmptyMessage =  reader["EmptyMessage"] != DBNull.Value ? 
                        (string) reader["EmptyMessage"] : "", 
                        MessageDate = Convert.ToDateTime(reader["Date"]) });
                    }
                }              
            }
            return messages;            
        }

        private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
        {
            if (e.Type == SqlNotificationType.Change)
            {
                MessagesHub.SendMessages();
            }
        }
    }

Буду признателен за любую помощь или идею.Спасибо

...