//----------------------------------------------------------------
        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);
        }
示例#2
0
 //-----------------------------------------------------------
 public CEntiteDeMemoryDb(DataRow row)
 {
     m_row      = new CMemoryDataRow(row);
     m_database = (CMemoryDb)m_row.Table.DataSet;
 }
示例#3
0
 //-----------------------------------------------------------
 public CEntiteDeMemoryDb(CMemoryDb database)
 {
     m_database = database;
 }
示例#4
0
 //----------------------------------------------------------------
 public CListeEntitesDeMemoryDb(CMemoryDb db, CFiltreMemoryDb filtrePrincipal)
     : base(db, typeof(T), filtrePrincipal)
 {
 }
示例#5
0
 //----------------------------------------------------------------
 public CListeEntitesDeMemoryDbBase(CMemoryDb db, Type typeElements, CFiltreMemoryDb filtrePrincipal)
     : this(db, typeElements)
 {
     m_filtrePrincipal = filtrePrincipal;
 }
示例#6
0
 //----------------------------------------------------------------
 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);
        }
示例#8
0
 //-------------------------------------------------
 public CEntiteDeMemoryDbAIdAuto(CMemoryDb db)
     : base(db)
 {
 }
示例#9
0
 //----------------------------------------------------------
 public CResultAErreur Importe(CMemoryDb sourceDb)
 {
     return(MiseAjour(sourceDb, false));
 }
示例#10
0
 //----------------------------------------------------------
 public CResultAErreur UpdateFrom(CMemoryDb sourceDb)
 {
     return(MiseAjour(sourceDb, true));
 }