// internal for testing internal FunctionParameter CreateFunctionParameter( FunctionDetailsRowView functionDetailsRow, UniqueIdentifierService uniqueIdentifierService, int parameterIndex, IList<EdmSchemaError> errors) { Debug.Assert(functionDetailsRow != null, "functionDetailsRow != null"); Debug.Assert(uniqueIdentifierService != null, "uniqueIdentifierService != null"); Debug.Assert(errors != null, "errors != null"); var parameterType = GetFunctionParameterType(functionDetailsRow, parameterIndex, errors); if (parameterType == null) { return null; } ParameterMode parameterMode; if (!functionDetailsRow.TryGetParameterMode(out parameterMode)) { errors.Add( new EdmSchemaError( string.Format( CultureInfo.InvariantCulture, Resources_VersioningFacade.ParameterDirectionNotValid, functionDetailsRow.ProcedureName, functionDetailsRow.ParameterName, functionDetailsRow.ProcParameterMode), (int)ModelBuilderErrorCode.ParameterDirectionNotValid, EdmSchemaErrorSeverity.Warning)); return null; } var parameterName = uniqueIdentifierService.AdjustIdentifier( ModelGeneratorUtils.CreateValidEcmaName(functionDetailsRow.ParameterName, 'p')); return FunctionParameter.Create(parameterName, parameterType, parameterMode); }