public static System.Data.DataTable GetSchemaOnPO(Type potype, bool allowCache = true) { //Si c'est un dataPO pur, on ne peus pas utiliser le cache if (potype == typeof(DataPO)) { allowCache = false; } System.Data.DataTable tableStd = null; // on commence par vérifier si on peut utiliser le cache if (allowCache && DataPOTools.TablePoSchemasCache.ContainsKey(potype)) { tableStd = DataPOTools.TablePoSchemasCache[potype]; } else { if (tableStd == null) { tableStd = DataPOTools.CreateSchemaOnPO(potype); } if (tableStd == null) { tableStd = new DataTable(); // on créer une table vierge, si on as rien de défini } if (allowCache) { DataPOTools.SetSchemaInCache(potype, tableStd, true); } } return(tableStd); }
/// <summary> /// Permet de preparer l'objet (notament définir le datarow et son schema) /// C'est nécessaire pour les opérations SQL, ou l'instanciation vide d'un DATAPO /// </summary> /// <param name="po"></param> /// <returns></returns> public static void DefineSchemaPO(this DataPO po, bool allowCache = true) { try { if (po == null) { return; } Type potype = po.GetType(); System.Data.DataTable tableStd = DataPOTools.GetSchemaOnPO(potype, allowCache); // on prend un clone de la table DefineSchemaPO(po, tableStd, true); // voir si il est possible d'améliorer pour ne pas prendre de clone !!! (faire le clone que si il y as modification des colonnes) } catch (Exception ex) { throw new Exception(string.Format("InitalizeDataPo {0}", ex.Message)); } }