public static void Example(string connectionString)
        {
            using (var sqlTableDependency = new ProductsSqlTableDependencyProvider2(connectionString, ThreadPoolScheduler.Instance))
            {
                sqlTableDependency.SubscribeToEntityChanges();

                Console.ReadKey();
            }
        }
        public static void Example(string connectionString)
        {
            using (var sqlTableDependency = new ProductsSqlTableDependencyProvider2(connectionString, ThreadPoolScheduler.Instance))
            {
                IDisposable whenEntityRecordChangesSubscription =
                    sqlTableDependency.WhenEntityRecordChanges
                    .Where(c => c.ChangeType == ChangeType.Update)
                    .Subscribe(c =>
                {
                    var entity = c.Entity;
                    Console.WriteLine("Id: " + entity.Id);
                    Console.WriteLine("Name: " + entity.Name);

                    var oldValues = c.EntityOldValues;

                    if (oldValues != null)
                    {
                        Console.WriteLine(Environment.NewLine);

                        Console.WriteLine("Id (OLD): " + oldValues.Id);
                        Console.WriteLine("Name (OLD): " + oldValues.Name);
                    }
                });

                IDisposable whenStatusChangesSubscription =
                    sqlTableDependency.WhenStatusChanges
                    .Subscribe(status =>
                {
                    Console.WriteLine($"SqlTableDependency Status {status}");
                });

                sqlTableDependency.SubscribeToEntityChanges();

                Console.ReadKey();

                whenEntityRecordChangesSubscription.Dispose();
                whenStatusChangesSubscription.Dispose();
            }
        }