public void Can_filter_update_method4_to_insert_date()
        {
            using (var db = OpenDbConnection())
            {
                CreateAndInitialize(db);

                ResetUpdateDate(db);
                db.Update <DefaultValues>(new { DefaultInt = 765 }, p => p.Id == 1,
                                          cmd => UpdateCommandFilter.SetUpdateDate <DefaultValues>(cmd, nameof(DefaultValues.UpdatedDateUtc)));
                VerifyUpdateDate(db);
            }
        }
        public async Task Can_filter_updateOnly_method2_to_insert_date()
        {
            using (var db = OpenDbConnection())
            {
                await CreateAndInitializeAsync(db);

                ResetUpdateDateAsync(db);
                await db.UpdateOnlyAsync(() => new DefaultValues { DefaultInt = 345 }, db.From <DefaultValues>().Where(p => p.Id == 1),
                                         cmd => UpdateCommandFilter.SetUpdateDate <DefaultValues>(cmd, nameof(DefaultValues.UpdatedDateUtc)));

                VerifyUpdateDateAsync(db);
            }
        }
        public async Task Can_filter_update_method2_to_insert_date()
        {
            using (var db = OpenDbConnection())
            {
                await CreateAndInitializeAsync(db);

                ResetUpdateDateAsync(db);
                await db.UpdateAsync(new DefaultValues { Id = 1, DefaultInt = 2342 }, p => p.Id == 1,
                                     cmd => UpdateCommandFilter.SetUpdateDate <DefaultValues>(cmd, nameof(DefaultValues.UpdatedDateUtc)));

                VerifyUpdateDateAsync(db);
            }
        }
        public void Can_filter_updateOnly_method5_to_insert_date()
        {
            using (var db = OpenDbConnection())
            {
                CreateAndInitialize(db);

                ResetUpdateDate(db);
                var row = db.SingleById <DefaultValues>(1);
                row.DefaultDouble = 978.423;
                db.UpdateOnly(row, new[] { nameof(DefaultValues.DefaultDouble) }, p => p.Id == 1,
                              cmd => UpdateCommandFilter.SetUpdateDate <DefaultValues>(cmd, nameof(DefaultValues.UpdatedDateUtc)));
                VerifyUpdateDate(db);
            }
        }
        public async Task Can_filter_updateOnly_method4_to_insert_date()
        {
            using (var db = OpenDbConnection())
            {
                await CreateAndInitializeAsync(db);

                ResetUpdateDateAsync(db);
                var row = await db.SingleByIdAsync <DefaultValues>(1);

                row.DefaultDouble = 978.423;
                await db.UpdateOnlyAsync(row, p => p.DefaultDouble, p => p.Id == 1,
                                         cmd => UpdateCommandFilter.SetUpdateDate <DefaultValues>(cmd, nameof(DefaultValues.UpdatedDateUtc)));

                VerifyUpdateDateAsync(db);
            }
        }
        public void Can_filter_updateAll_to_insert_date()
        {
            using (var db = OpenDbConnection())
            {
                CreateAndInitialize(db, 2);

                ResetUpdateDate(db);
                db.UpdateAll(new [] { new DefaultValues {
                                          Id = 1, DefaultInt = 45
                                      }, new DefaultValues {
                                          Id = 2, DefaultInt = 72
                                      } },
                             cmd => UpdateCommandFilter.SetUpdateDate <DefaultValues>(cmd, nameof(DefaultValues.UpdatedDateUtc)));
                VerifyUpdateDate(db);
                VerifyUpdateDate(db, id: 2);
            }
        }
        public async Task Can_filter_updateAdd_expression_to_insert_date()
        {
            using (var db = OpenDbConnection())
            {
                await CreateAndInitializeAsync(db);

                ResetUpdateDateAsync(db);

                var count = await db.UpdateAddAsync(() => new DefaultValues { DefaultInt = 5, DefaultDouble = 7.2 }, p => p.Id == 1,
                                                    cmd => UpdateCommandFilter.SetUpdateDate <DefaultValues>(cmd, nameof(DefaultValues.UpdatedDateUtc)));

                Assert.That(count, Is.EqualTo(1));
                var row = await db.SingleByIdAsync <DefaultValues>(1);

                Assert.That(row.DefaultInt, Is.EqualTo(6));
                Assert.That(row.DefaultDouble, Is.EqualTo(8.3).Within(0.1));
                VerifyUpdateDateAsync(db);
            }
        }
        public void Can_filter_updateAdd_sqlexpression_to_insert_date()
        {
            using (var db = OpenDbConnection())
            {
                CreateAndInitialize(db);

                ResetUpdateDate(db);

                var where = db.From <DefaultValues>().Where(p => p.Id == 1);
                var count = db.UpdateAdd(() => new DefaultValues {
                    DefaultInt = 5, DefaultDouble = 7.2
                }, where,
                                         cmd => UpdateCommandFilter.SetUpdateDate <DefaultValues>(cmd, nameof(DefaultValues.UpdatedDateUtc)));

                Assert.That(count, Is.EqualTo(1));
                var row = db.SingleById <DefaultValues>(1);
                Assert.That(row.DefaultInt, Is.EqualTo(6));
                Assert.That(row.DefaultDouble, Is.EqualTo(8.3).Within(0.1));
                VerifyUpdateDate(db);
            }
        }