//---------------------------------------------------------------- public CEntiteDeMemoryDb GetEntity(CMemoryDb contexteMemoire) { CEntiteDeMemoryDb entite = (CEntiteDeMemoryDb)Activator.CreateInstance(m_typeObjet, new object[] { contexteMemoire }); foreach (object cle in m_cles) { try { string strId = (string)cle; if (entite.ReadIfExist(strId)) { return(entite); } } catch { continue; } } return(null); }
//----------------------------------------------------------- public CEntiteDeMemoryDb(DataRow row) { m_row = new CMemoryDataRow(row); m_database = (CMemoryDb)m_row.Table.DataSet; }
//----------------------------------------------------------- public CEntiteDeMemoryDb(CMemoryDb database) { m_database = database; }
//---------------------------------------------------------------- public CListeEntitesDeMemoryDb(CMemoryDb db, CFiltreMemoryDb filtrePrincipal) : base(db, typeof(T), filtrePrincipal) { }
//---------------------------------------------------------------- public CListeEntitesDeMemoryDbBase(CMemoryDb db, Type typeElements, CFiltreMemoryDb filtrePrincipal) : this(db, typeElements) { m_filtrePrincipal = filtrePrincipal; }
//---------------------------------------------------------------- public CListeEntitesDeMemoryDb(CMemoryDb db) : base(db, typeof(T)) { }
////////////////////////////////////////////////// public override string GetFiltreDataTable() { string strFiltre = Filtre; CMemoryDb mdbExemple = null; DataTable table = null; int nNumParametre = 1; string[] strComposants = strFiltre.Split(' ', '=', '<', '>'); foreach (string strComposant in strComposants) { if (strComposant.Contains(".")) { if (mdbExemple == null) { mdbExemple = new CMemoryDb(); } if (table == null) { table = mdbExemple.GetTable(m_typePrincipal); } if (table == null) { throw new Exception("Error in filter, can not find " + m_typePrincipal.ToString() + " table"); } //Cherche les tables demandées string[] strTables = strComposant.Split('.'); string strViewSyntax = ""; bool bOk = true; Type typeInterroge = m_typePrincipal; string strTableInterrogée = table.TableName; for (int nTable = 0; nTable < strTables.Length - 1; nTable++) { string strTable = strTables[nTable]; bOk = false; foreach (PropertyInfo info in typeInterroge.GetProperties()) { bool bPropOk = info.Name.ToUpper() == strTable.ToUpper(); if (!bPropOk) { //Regarde le nom de la table correspondantes Type tp = info.PropertyType; object[] attrs = tp.GetCustomAttributes(typeof(MemoryTableAttribute), true); if (attrs.Length > 0) { if (((MemoryTableAttribute)attrs[0]).NomTable.ToUpper() == strTable) { bPropOk = true; } } } if (bPropOk) { string strS = GetStringRelation(ref typeInterroge, ref strTableInterrogée, info); if (strS.Length == 0) { break; } else { strViewSyntax += strS + "."; bOk = true; break; } } } if (!bOk) { break; } } if (bOk) { strViewSyntax += strTables[strTables.Length - 1];//Ajoute le champ final strFiltre = strFiltre.Replace(strComposant, strViewSyntax); } else { strFiltre += strComposant; } } } foreach (object obj in Parametres) { string strReplace = obj.ToString(); if (obj is String) { strReplace = strReplace.Replace("'", "''"); strReplace = "'" + strReplace + "'"; } if (obj is DateTime) { DateTime dt = (DateTime)obj; strReplace = "#" + dt.ToString("MM/dd/yyyy HH:mm") + "#"; } if (obj is bool) { strReplace = ((bool)obj) ? "1" : "0"; } Regex ex = new Regex("(@" + nNumParametre.ToString() + ")(?<SUITE>[^0123456789]{1})"); strFiltre = ex.Replace(strFiltre + " ", strReplace + "${SUITE}"); nNumParametre++; } return(strFiltre); }
//------------------------------------------------- public CEntiteDeMemoryDbAIdAuto(CMemoryDb db) : base(db) { }
//---------------------------------------------------------- public CResultAErreur Importe(CMemoryDb sourceDb) { return(MiseAjour(sourceDb, false)); }
//---------------------------------------------------------- public CResultAErreur UpdateFrom(CMemoryDb sourceDb) { return(MiseAjour(sourceDb, true)); }