/// <summary> /// Get the list of attributs for each propertie of the class /// </summary> /// <returns></returns> private List <FieldSQLAttribute> GetListOfAttributsForEachFieldSQL() { List <FieldSQLAttribute> lstAttFieldSQL = new List <FieldSQLAttribute>(); Type type = typeof(T); PropertyInfo[] lstPropertyInfo = type.GetProperties(); foreach (PropertyInfo pi in lstPropertyInfo) { FieldSQLAttribute attFielSQL = GetFieldSQLAttribute(pi); lstAttFieldSQL.Add(attFielSQL); } lstAttFieldSQL.Sort(delegate(FieldSQLAttribute x, FieldSQLAttribute y) { return(x.OrdreSQL.CompareTo(y.OrdreSQL)); }); return(lstAttFieldSQL); }
/// <summary> /// Create the parameters SQL for each properties of T /// </summary> /// <param name="parameters"></param> /// <param name="objet"></param> /// <param name="typereq"></param> private void CreateParameterSQL(DynamicParameters parameters, T objet, TypeReq typereq) { bool createParam = false; foreach (PropertyInfo pi in objet.GetType().GetProperties()) { createParam = false; FieldSQLAttribute attrs = RequestFactory.GetFieldSQLAttribute(pi); if ((attrs != null) && (!attrs.ExcluSQL) && (!string.IsNullOrEmpty(attrs.NameSQL))) { if ((!attrs.Identity) && ((typereq == TypeReq.Insert) || (typereq == TypeReq.Update))) { createParam = true; } if ((attrs.PK) && (typereq == TypeReq.OnlyPK)) { createParam = true; } if (createParam) { object value = null; try { value = pi.GetValue(objet, null); } catch { //no break } parameters.Add("@" + attrs.NameSQL.ToLower(), value, GetTypeSQL(attrs.TypeSQL), ParameterDirection.Input); } } } }
/// <summary> /// Get the FieldSQLAttribute object for one PropertyInfo /// </summary> /// <param name="propertyInfo"></param> /// <returns></returns> public FieldSQLAttribute GetFieldSQLAttribute(PropertyInfo propertyInfo) { var listOfCustomAttributes = propertyInfo.GetCustomAttributes <FieldSQLAttribute>(); FieldSQLAttribute attFielSQL = new FieldSQLAttribute(); foreach (FieldSQLAttribute fieldAtt in listOfCustomAttributes) { attFielSQL.ExcluSQL = fieldAtt.ExcluSQL; attFielSQL.PK = fieldAtt.PK; attFielSQL.FK = fieldAtt.FK; attFielSQL.IX = fieldAtt.IX; attFielSQL.Identity = fieldAtt.Identity; attFielSQL.Nullable = fieldAtt.Nullable; attFielSQL.NameSQL = fieldAtt.NameSQL; attFielSQL.TypeSQL = fieldAtt.TypeSQL; attFielSQL.LengthSQL = fieldAtt.LengthSQL; attFielSQL.PrecisionSQL = fieldAtt.PrecisionSQL; attFielSQL.OrdreSQL = fieldAtt.OrdreSQL; } return(attFielSQL); }