Продолжая тему удаления неиспользуемого:
Как правильно удалить неиспользуемые и не найденные Data Extraction?
Database.DataLinkManager, насколько я понял, является только частью механизма.
Например, такой код превращает Data Extraction из Unreferenced в Unresolved, но не удаляет. Да и то это не всегда происходит.
- [CommandMethod("rdx")] 
- public void RemoveDataExtractions() 
- { 
-     Database db = HostApplicationServices.WorkingDatabase; 
-     DataLinkManager dlm = db.DataLinkManager; 
-     if (dlm == null) 
-         return; 
-   
-     Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; 
-     int count = 0; 
-     using (Transaction tr = db.TransactionManager.StartTransaction()) 
-     { 
-         ed.WriteMessage("Найдено {0} dataextraction", db.DataLinkManager.DataLinkCount); 
-   
-         foreach (var item in 
-             db 
-             .DataLinkManager 
-             .GetDataLink().Cast<ObjectId>() 
-             .Select(id => (DataLink)tr.GetObject(id, OpenMode.ForRead))) 
-         { 
-             ObjectIdCollection coll = item.GetTargets(); 
-             if (coll.Count == 0) 
-             { 
-                 db.DataLinkManager.RemoveDataLink(item.ObjectId); 
-                 count++; 
-             } 
-         } 
-         tr.Commit(); 
-     } 
-   
-     ed.WriteMessage("\nУдалено {0} dataextraction", count); 
- } 
db.Purge() по DataLinkDictionaryId тоже даёт неправильные результаты.