public static Collection <StoredProcedureParameterInfo> BuildStoredProcedureParameterInfo(object storedProcedure) { var parameters = new Collection <StoredProcedureParameterInfo>(); foreach (PropertyInfo propertyInfo in storedProcedure.GetType().GetProperties()) { var attribute = Attributes.GetAttribute <StoredProcedureParameterAttribute>(propertyInfo); if (attribute != null) { 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, Scale = attribute.Scale, Precision = attribute.Precision }); } } return(parameters); }
private static PropertyInfo GetMatchingProperty(object storedProcedure, SqlParameter parameter) { foreach (PropertyInfo 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); }