private void getRelationData(DatabaseTable dbObject, DBRelation relation) { IRelationList list = relation.GetRelationList(dbObject); if (list.Populated) { return; } bool oldCommitNeededFlag = dbObject.CommitNeeded; list.Populated = true; // build query string selectQuery = "select " + relation.SecondaryColumnName + " from " + relation.TableName + " where " + relation.PrimaryColumnName + "=" + dbObject.ID; // and retireve relations SQLiteResultSet resultSet; lock (lockObject) resultSet = dbClient.Execute(selectQuery); // parse results and add them to the list list.Clear(); foreach (SQLiteResultSet.Row currRow in resultSet.Rows) { int objID = int.Parse(currRow.fields[0]); DatabaseTable newObj = Get(relation.SecondaryType, objID); list.AddIgnoreSisterList(newObj); } // update flags as needed list.CommitNeeded = false; dbObject.CommitNeeded = oldCommitNeededFlag; }
public void Commit(IRelationList relationList) { updateRelationTable(relationList.Owner, relationList.MetaData); }
public void Populate(IRelationList relationList) { getRelationData(relationList.Owner, relationList.MetaData); }