public async Task <int> CreateAsync(T newInstance)
        {
            if (newInstance is null)
            {
                throw new ArgumentNullException(nameof(newInstance));
            }

            (string createQuery, QueryParameter[] parameters) = SqlQueryGenerator.GenerateInsertQuery(newInstance);
            int affectedRowCount = await template.ExecuteAsync(createQuery, parameters)
                                   .ConfigureAwait(false);

            if (affectedRowCount != 1)
            {
                throw new InvalidOperationException($"The INSERT Query affected {affectedRowCount} rows -> should only affect 1");
            }

            string getLastGivenIdentityQuery = SqlQueryGenerator.GenerateGetLastIdentityQuery();

            return(await template.QuerySingleInt32Async(getLastGivenIdentityQuery)
                   .ConfigureAwait(false));
        }