public async Task UpdateMultipleDomainObjectsTests()
        {
            var raceDao = new GenericDao <Entities.Race>(new DefaultConnectionFactory());

            var comparisonRaceIds = new int[] { 10, 20, 30 };

            var updateCondition = new QueryConditionBuilder()
                                  .DeclareConditionNode(
                QueryConditionNodeType.Or,
                () => new QueryConditionBuilder()
                .DeclareCondition(nameof(Entities.EntityObjectBase.Id), QueryConditionType.Equals, comparisonRaceIds[0]),
                () => new QueryConditionBuilder()
                .DeclareConditionNode(
                    QueryConditionNodeType.Or,
                    () => new QueryConditionBuilder()
                    .DeclareCondition(nameof(Entities.EntityObjectBase.Id), QueryConditionType.Equals, comparisonRaceIds[1]),
                    () => new QueryConditionBuilder()
                    .DeclareCondition(nameof(Entities.EntityObjectBase.Id), QueryConditionType.Equals, comparisonRaceIds[2])))
                                  .Build();

            var expectedNumberOfSensors = 10;
            var expectedDate            = DateTime.Now.Date.AddYears(1);

            foreach (var raceId in comparisonRaceIds)
            {
                var raceEntity = await raceDao.GetByIdAsync(raceId).ConfigureAwait(false);

                Assert.NotEqual(expectedNumberOfSensors, raceEntity.NumberOfSensors);
                Assert.NotEqual(expectedDate, raceEntity.Date);
            }

            var updateColumns = new
            {
                NumberOfSensors = expectedNumberOfSensors,
                Date            = expectedDate
            };

            var affectedRows = await raceDao.UpdateAsync(updateColumns, updateCondition).ConfigureAwait(false);

            Assert.Equal(comparisonRaceIds.Length, affectedRows);

            foreach (var raceId in comparisonRaceIds)
            {
                var raceEntity = await raceDao.GetByIdAsync(raceId).ConfigureAwait(false);

                Assert.Equal(expectedNumberOfSensors, raceEntity.NumberOfSensors);
                Assert.Equal(expectedDate, raceEntity.Date);
            }
        }
        public async Task CreateWithSqlInjectionTest()
        {
            var connectionFactory = new DefaultConnectionFactory();
            var seasonDao         = new GenericDao <Entities.Season>(connectionFactory);

            var expectedDomainObject = new Entities.Season()
            {
                Name      = "'DELETE FROM [Hurace].[Sex];--",
                StartDate = DateTime.Now.AddDays(-365).Date,
                EndDate   = DateTime.Now.Date
            };

            var actualDomainObjectId = await seasonDao.CreateAsync(expectedDomainObject)
                                       .ConfigureAwait(false);

            var actualDomainObject = await seasonDao.GetByIdAsync(actualDomainObjectId)
                                     .ConfigureAwait(false);

            Assert.Equal(expectedDomainObject.Name, actualDomainObject.Name);
            Assert.Equal(expectedDomainObject.StartDate, actualDomainObject.StartDate);
            Assert.Equal(expectedDomainObject.EndDate, actualDomainObject.EndDate);

            var sexDao = new GenericDao <Entities.Sex>(connectionFactory);

            Assert.Equal(2, (await sexDao.GetAllConditionalAsync().ConfigureAwait(false)).Count());
        }