public static Collection <StoredProcedureParameterInfo> BuildStoredProcedureParameterInfo(object storedProcedure)
        {
            var parameters = new Collection <StoredProcedureParameterInfo>();

            foreach (var propertyInfo in storedProcedure.GetType().GetProperties())
            {
                var attribute = Attributes.GetAttribute <StoredProcedureParameterAttribute>(propertyInfo);

                if (attribute == null)
                {
                    continue;
                }
                var parameterName = Helper.GetParameterName(propertyInfo);

                var isUserDefinedTableParameter = Helper.IsUserDefinedTableParameter(propertyInfo);
                var isMandatory = Helper.ParameterIsMandatory(attribute.Options);

                parameters.Add(new StoredProcedureParameterInfo
                {
                    Name = parameterName,
                    IsUserDefinedTable = isUserDefinedTableParameter,
                    IsMandatory        = isMandatory,
                    SqlDataType        = attribute.DataType,
                    PropertyInfo       = propertyInfo,
                    Direction          = attribute.Direction,
                    Size = attribute.Size
                });
            }

            return(parameters);
        }
Example #2
0
        private static PropertyInfo GetMatchingProperty(object storedProcedure, SqlParameter parameter)
        {
            foreach (var propertyInfo in storedProcedure.GetType().GetProperties().Where(p => p.HasAttribute <StoredProcedureParameterAttribute>()))
            {
                var helper = new StoredProcedureParserHelper();

                var name = helper.GetParameterName(propertyInfo);

                if (parameter.ParameterName.Substring(1) == name)
                {
                    return(propertyInfo);
                }
            }

            return(null);
        }