public async Task <long> Insert(long currentUserId, T entity)
        {
            var resultParameters = new List <TParameter>();

            SQLExecutor.AddParameter(resultParameters, SQLConstants.UPDATED_BY_PARAMETER_NAME, currentUserId, DbType.Int64);
            SQLExecutor.AddParameter(resultParameters, SQLConstants.UID_PARAMETER_NAME, entity.Uid, DbType.Guid);
            SQLExecutor.AddParameter(resultParameters, SQLConstants.NAME_PARAMETER_NAME, entity.Name, DbType.String);

            for (var i = 0; i < Fields.Length; i++)
            {
                var field = Fields[i];
                if (BaseFields.Any(x => x.Name == field.Name))
                {
                    continue;
                }

                var parameter = GetParameterInfoFromField(entity, field);
                resultParameters.AddRange(parameter);
            }

            var id = await SQLExecutor.ExecuteSqlReturningValue <long>(QueryInsert, resultParameters);

            entity.Id = id;
            return(id);
        }