示例#1
0
 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);
 }
示例#2
0
        /// <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));
            }
        }