private void CreateParameter(Function function, ParameterSchema parameterSchema)
        {
            Parameter parameter;
            if (function.Parameters.Contains(parameterSchema.Name))
            {
                parameter = function.Parameters[parameterSchema.Name];
            }
            else
            {
                parameter = new Parameter(parameterSchema.Name, GetSystemType(parameterSchema));
                function.Parameters.Add(parameter);
            }

            //Parameter/@Parameter is safe
            if (string.IsNullOrEmpty(parameter.ParameterName))
            {
                string parameterName = parameterSchema.Name;
                if (parameterName.StartsWith("@"))
                    parameterName = parameterName.Substring(1);

                parameter.ParameterName = ToParameterName(parameterName);
            }

            parameter.Type = GetSystemType(parameterSchema);
            parameter.DbType = GetDbType(parameterSchema);

            switch (parameterSchema.Direction)
            {
                case System.Data.ParameterDirection.Input:
                    parameter.Direction = ParameterDirection.In;
                    break;
                case System.Data.ParameterDirection.InputOutput:
                    parameter.Direction = ParameterDirection.InOut;
                    break;
                case System.Data.ParameterDirection.Output:
                    parameter.Direction = ParameterDirection.Out;
                    break;
            }
        }
            public override Parameter VisitParameter(Parameter parameter)
            {
                if (parameter == null)
                    return null;

                writer.WriteStartElement("Parameter");

                if (parameter.Name != null)
                    writer.WriteAttributeString("Name", parameter.Name);

                if ((parameter.ParameterName != null) && (parameter.ParameterName != parameter.Name))
                    writer.WriteAttributeString("Parameter", parameter.ParameterName);

                if (parameter.Type != null)
                    writer.WriteAttributeString("Type", parameter.Type);

                if (parameter.DbType != null)
                    writer.WriteAttributeString("DbType", parameter.DbType);

                if (parameter.Direction.HasValue)
                    writer.WriteAttributeString("Direction", parameter.Direction.ToString());

                writer.WriteEndElement();
                return parameter;
            }
            public override Parameter VisitParameter(Parameter parameter)
            {
                if (parameter == null)
                    return null;

                if (parameter.ParameterName == parameter.Name)
                    parameter.ParameterName = null;

                if (parameter.Direction.HasValue && parameter.Direction.Value == ParameterDirection.In)
                    parameter.Direction = null;
                
                return parameter;
            }
            public override Parameter VisitParameter(Parameter parameter)
            {
                if (parameter == null)
                    return null;

                if (parameter.ParameterName == null)
                    parameter.ParameterName = parameter.Name;

                if (!parameter.Direction.HasValue)
                    parameter.Direction = 0;

                return parameter;
            }
            public override Parameter VisitParameter(Parameter parameter)
            {
                if (parameter == null)
                    return null;

                return new Parameter(parameter.Name, parameter.Type)
                           {
                               ParameterName = parameter.ParameterName,
                               Type = parameter.Type,
                               DbType = parameter.DbType,
                               Direction = parameter.Direction
                           };
            }
Exemple #6
0
            private static Parameter ReadParameter(XmlTextReader reader)
            {
                ValidateAttributes(reader, new[] {"Name", "Parameter", "Type", "DbType", "Direction"});
                var parameter = new Parameter("", "");

                string attribute = reader.GetAttribute("Name");
                if (attribute == null)
                    throw Error.RequiredAttributeMissingViolation("Name", reader.LineNumber);
                parameter.Name = attribute;

                parameter.ParameterName = reader.GetAttribute("Parameter");

                string typeAttribute = reader.GetAttribute("Type");
                if (typeAttribute == null)
                    throw Error.RequiredAttributeMissingViolation("Type", reader.LineNumber);
                parameter.Type = typeAttribute;

                parameter.DbType = reader.GetAttribute("DbType");

                string dicection = reader.GetAttribute("Direction");
                try
                {
                    if (dicection == null)
                        parameter.Direction = null;
                    else
                        parameter.Direction =
                            (ParameterDirection) Enum.Parse(typeof (ParameterDirection), dicection, true);
                }
                catch (ArgumentException)
                {
                    throw Error.InvalidEnumAttributeValueViolation(dicection, reader.LineNumber);
                }
                AssertEmptyElement(reader);
                return parameter;
            }