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