public static void Replace <T>(string connectionString, T entity) where T : new()
        {
            var replaceBuilder = new ReplaceQueryBuilder()
                                 .WithFields(EntityFactory.GetFieldsWithValues(entity, false));

            var query = replaceBuilder.Build <T>();

            DataBaseDataReader.ExecuteNonQuery(connectionString, query);
        }
        public void GenerateSimpleQueryTest()
        {
            // Arrange
            const string queryExpected = "REPLACE INTO `books` (`Id`, `Title`, `Price`) VALUES (1, 'Essential C#', 20.99)";
            var          fields        = new Dictionary <string, object>
            {
                { GetColumnNameWithQuotes <Book>(nameof(Book.Id)), 1 },
                { GetColumnNameWithQuotes <Book>(nameof(Book.Title)), "Essential C#" },
                { GetColumnNameWithQuotes <Book>(nameof(Book.Price)), 20.99d }
            };
            var insertQueryBuilder = new ReplaceQueryBuilder()
                                     .WithFields(fields);

            // Act
            var query = insertQueryBuilder.Build <Book>();

            // Assert
            Assert.AreEqual(queryExpected, query);
        }