Пример #1
0
 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);
 }
Пример #2
0
 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();
     }
 }
Пример #3
0
 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);
 }
Пример #4
0
 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);
     }
 }
Пример #5
0
 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);
     }
 }