bool RemovePropertyValueT(ElementId oid, out T pv) { if (m_propertyValue.TryGetValue(oid, out pv)) { m_propertyValue.Remove(oid); if (m_valueIndex != null) { if (m_valueIndex.TryGetKey(pv, ref pv)) { BTreeSet <ElementId> oidArray = m_valueIndex[pv]; if (oidArray.Count > 1) { oidArray.Remove(oid); } else { oidArray.Unpersist(Session); m_valueIndex.Remove(pv); } } } else if (m_valueIndexUnique != null) { m_valueIndexUnique.Remove(pv); } return(true); } return(false); }
public void UnpersistCompareFields(int bTreeDatabaseNumber) { using (SessionNoServer session = new SessionNoServer(systemDir)) { session.BeginUpdate(); BTreeSet <Person> bTree = (BTreeSet <Person>)session.Open(Oid.Encode((uint)bTreeDatabaseNumber, 1, 1)); BTreeSetIterator <Person> itr = bTree.Iterator(); itr.GoToLast(); itr.Remove(); session.Abort(); session.BeginUpdate(); bTree = (BTreeSet <Person>)session.Open(Oid.Encode((uint)bTreeDatabaseNumber, 1, 1)); bTree.Unpersist(session); session.Commit(); session.BeginRead(); Database db = session.OpenDatabase((uint)bTreeDatabaseNumber, false); foreach (Page page in db) { foreach (OptimizedPersistable obj in page) { if (obj.PageNumber > 0) { Assert.Fail("No objects should remain in this database"); } } } session.Commit(); } }
public override void Unpersist(SessionBase session) { if (m_interactions != null) { foreach (var r in m_interactions) { r.RemoveUserRelation(this); } m_interactions.Unpersist(session); } base.Unpersist(session); }
public override void Unpersist(SessionBase session) { if (IsPersistent) { foreach (var file in m_files.ToArray()) { file.Unpersist(session); } m_files.Unpersist(session); foreach (var folder in m_subFolders.ToArray()) { folder.Unpersist(session); } m_subFolders.Unpersist(session); base.Unpersist(session); } }
public override void Unpersist(SessionBase session) { if (IsPersistent) { if (m_folderRelation != null) { m_folderRelation.Unpersist(session); } foreach (FileInDb file in m_files.ToArray()) // ToArray because file.Unpersist modifies m_files. { file.Unpersist(session); } m_files.Unpersist(session); foreach (Folder folder in m_folders.ToArray()) { folder.Unpersist(session); } m_folders.Unpersist(session); base.Unpersist(session); } }