//---------------------------------------------------------------------------- public List <CReferenceObjetDependant> GetDependances(CEntitiesManager manager, CObjetDonnee objet) { List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>(); if (objet == null) { return(lst); } if (!(objet is CObjetDonneeAIdNumerique)) { return(lst); } foreach (RelationTypeIdAttribute rt in CContexteDonnee.RelationsTypeIds) { if (rt.IsAppliqueToType(objet.GetType()) && objet.GetType().GetCustomAttribute <NoRelationTypeIdAttribute>() == null) { Type tpRelId = CContexteDonnee.GetTypeForTable(rt.TableFille); if (tpRelId != null && !manager.ConfigurationRecherche.IsIgnore(tpRelId)) { CListeObjetsDonnees lstRT = new CListeObjetsDonnees(objet.ContexteDonnee, tpRelId); lstRT.Filtre = new CFiltreData(rt.ChampType + "=@1 and " + rt.ChampId + "=@2", objet.GetType().ToString(), ((CObjetDonneeAIdNumerique)objet).Id); foreach (CObjetDonnee objetRT in lstRT) { lst.Add(new CReferenceObjetDependant(rt.NomConvivialPourParent, objetRT)); } } } } return(lst); }
//---------------------------------------------------------------------------- public List <CReferenceObjetDependant> GetDependances(CEntitiesManager manager, CObjetDonnee objet) { List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>(); if (objet == null) { return(lst); } CStructureTable structure = CStructureTable.GetStructure(objet.GetType()); foreach (CInfoRelation relation in structure.RelationsParentes) { Type tpParent = CContexteDonnee.GetTypeForTable(relation.TableParente); if (manager.ConfigurationRecherche.IsIgnore(tpParent)) { return(lst); } CObjetDonnee parent = objet.GetParent(relation.ChampsFille, tpParent); bool bHasUniversalId = tpParent.GetCustomAttribute <NoIdUniverselAttribute>(true) == null; string strNomProp = relation.NomConvivial; if (strNomProp.Length == 0) { strNomProp = DynamicClassAttribute.GetNomConvivial(tpParent); } if (parent != null) { if (bHasUniversalId) { lst.Add(new CReferenceObjetDependant(strNomProp, tpParent, parent.DbKey)); } else { lst.Add(new CReferenceObjetDependant(strNomProp, tpParent, parent.GetValeursCles())); } } } return(lst); }
//---------------------------------------------------------------------------- public static void Autoexec() { CEntitiesManager.RegisterFournisseurDependances(typeof(CChercheurRelationsTypeId)); }
//---------------------------------------------------------------------------- public List <CReferenceObjetDependant> GetDependances(CEntitiesManager manager, CObjetDonnee objet) { List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>(); if (objet == null) { return(lst); } CStructureTable structure = CStructureTable.GetStructure(objet.GetType()); foreach (CInfoRelation relation in structure.RelationsFilles) { Type tpFille = CContexteDonnee.GetTypeForTable(relation.TableFille); if (manager.ConfigurationRecherche.IsIgnore(tpFille)) { return(lst); } C2iRequeteAvancee requete = new C2iRequeteAvancee(); requete.FiltreAAppliquer = CFiltreData.CreateFiltreAndSurValeurs(relation.ChampsFille, objet.GetValeursCles()); requete.TableInterrogee = relation.TableFille; bool bHasUniversalId = tpFille.GetCustomAttribute <NoIdUniverselAttribute>(true) == null; if (bHasUniversalId) { requete.ListeChamps.Add(new C2iChampDeRequete(CObjetDonnee.c_champIdUniversel, new CSourceDeChampDeRequete(CObjetDonnee.c_champIdUniversel), typeof(string), OperationsAgregation.None, true)); } else { CStructureTable sFille = CStructureTable.GetStructure(tpFille); foreach (CInfoChampTable infoChamp in sFille.ChampsId) { requete.ListeChamps.Add(new C2iChampDeRequete(infoChamp.NomChamp, new CSourceDeChampDeRequete(infoChamp.NomChamp), infoChamp.TypeDonnee, OperationsAgregation.None, true)); } } string strNomProp = relation.NomConvivial; if (strNomProp.Length == 0) { strNomProp = "List of " + DynamicClassAttribute.GetNomConvivial(tpFille); } CResultAErreur result = requete.ExecuteRequete(objet.ContexteDonnee.IdSession); if (result && result.Data is DataTable) { DataTable table = result.Data as DataTable; foreach (DataRow row in table.Rows) { if (bHasUniversalId) { lst.Add(new CReferenceObjetDependant(strNomProp, tpFille, CDbKey.GetNewDbKeyOnUniversalIdANePasUtiliserEnDehorsDeCDbKeyAddOn((string)row[0]))); } else { lst.Add(new CReferenceObjetDependant(strNomProp, tpFille, row.ItemArray)); } } } } return(lst); }