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); }