public static Boolean ObjectUpdateDB(KBObject obj) { KBModel model = obj.Model; IList <KBObject> tableUpdInsDel = (from r in model.GetReferencesFrom(obj.Key, LinkType.UsedObject) where r.ReferenceType == ReferenceType.WeakExternal // las referencias a tablas que agrega el especificador son de este tipo where (ReferenceTypeInfo.HasUpdateAccess(r.LinkTypeInfo) || ReferenceTypeInfo.HasDeleteAccess(r.LinkTypeInfo) || ReferenceTypeInfo.HasInsertAccess(r.LinkTypeInfo)) select model.Objects.Get(r.From)).ToList(); return(tableUpdInsDel.Count > 0); }
private static List <string> MostReferencedInFolder(Table tbl) { IOutputService output = CommonServices.Output; List <string> list = new List <string>(); foreach (EntityReference refe in tbl.GetReferencesTo()) { KBObject objRef = KBObject.Get(tbl.Model, refe.From); if (objRef != null) { bool read, insert, update, delete, isBase; ReferenceTypeInfo.ReadTableInfo(refe.LinkTypeInfo, out read, out insert, out update, out delete, out isBase); string updated = (update || delete || insert) ? "UPDATED" : ""; if (objRef.Parent is Folder) { list.Add("FOLDER:" + objRef.Parent.Name + " | " + updated); } if (objRef.Parent is Module) { list.Add("MODULE:" + objRef.Parent.Name + " | " + updated); } } } output.AddLine(" "); output.AddLine("============> " + tbl.Name); list.Sort(); foreach (string s in list) { output.AddLine(s); } return(list); }
private void buttonLoadTables_Click(object sender, EventArgs e) { IKBService kbserv = UIServices.KB; KBModel kbmodel = kbserv.CurrentModel; //Create a New DataTable to store the Data DataTable Tables = new DataTable("Tables"); //Create the Columns in the DataTable DataColumn c0 = new DataColumn("Name"); DataColumn c1 = new DataColumn("Module"); System.Type typeInt32 = System.Type.GetType("System.Int32"); DataColumn c2 = new DataColumn("#Updates", typeInt32); DataColumn c3 = new DataColumn("#Readers", typeInt32); DataColumn c4 = new DataColumn("#Inserts", typeInt32); DataColumn c5 = new DataColumn("#Total", typeInt32); //Add the Created Columns to the Datatable Tables.Columns.Add(c0); Tables.Columns.Add(c1); Tables.Columns.Add(c2); Tables.Columns.Add(c3); Tables.Columns.Add(c4); Tables.Columns.Add(c5); //Create 3 rows DataRow row; foreach (KBObject obj in kbserv.CurrentModel.Objects.GetAll()) { if (obj is Table) { row = Tables.NewRow(); row["Name"] = obj.Name; row["Module"] = ModulesHelper.ObjectModule(obj); IList <KBObject> updaters = (from r in kbmodel.GetReferencesTo(obj.Key, LinkType.UsedObject) where r.ReferenceType == ReferenceType.WeakExternal // las referencias a tablas que agrega el especificador son de este tipo where ReferenceTypeInfo.HasUpdateAccess(r.LinkTypeInfo) select kbmodel.Objects.Get(r.From)).ToList(); row["#Updates"] = updaters.Count; IList <KBObject> readers = (from r in kbmodel.GetReferencesTo(obj.Key, LinkType.UsedObject) where r.ReferenceType == ReferenceType.WeakExternal // las referencias a tablas que agrega el especificador son de este tipo where ReferenceTypeInfo.HasReadAccess(r.LinkTypeInfo) select kbmodel.Objects.Get(r.From)).ToList(); row["#Readers"] = readers.Count; IList <KBObject> inserts = (from r in kbmodel.GetReferencesTo(obj.Key, LinkType.UsedObject) where r.ReferenceType == ReferenceType.WeakExternal // las referencias a tablas que agrega el especificador son de este tipo where ReferenceTypeInfo.HasInsertAccess(r.LinkTypeInfo) select kbmodel.Objects.Get(r.From)).ToList(); row["#Inserts"] = inserts.Count; row["#Total"] = updaters.Count + readers.Count + inserts.Count; Tables.Rows.Add(row); } } DataGridViewColumn c6 = dataGridTables.Columns.GetLastColumn(DataGridViewElementStates.Frozen, DataGridViewElementStates.None); dataGridTables.DataSource = Tables; dataGridTables.Sort(c6, ListSortDirection.Descending); }