public RemoveObject ( IMappedObject obj ) : void | ||
obj | IMappedObject | /// Object to be removed. /// |
Résultat | void |
public void RemoveObject(IMappedObject obj) {
string id = this.GetId(obj);
using (var tran = this.engine.GetTransaction()) {
MappedObject root = null;
List<MappedObject> objects = new List<MappedObject>();
foreach (var row in tran.SelectForward<string, DbCustomSerializer<MappedObject>>(MappedObjectsTable)) {
var value = row.Value;
if (value == null) {
continue;
}
var data = value.Get;
if (data == null) {
continue;
}
if (row.Key.Equals(id)) {
root = data;
} else {
objects.Add(data);
}
}
if (root == null) {
return;
}
this.RemoveChildren(tran, root, ref objects);
tran.RemoveKey<string>(MappedObjectsTable, id);
tran.RemoveKey<byte[]>(MappedObjectsGuidsTable, root.Guid.ToByteArray());
tran.Commit();
}
this.ValidateObjectStructureIfFullValidationIsEnabled();
}
public void RemoveObjectDoesNotTouchParents([Values(true, false)]bool withValidation) { string remoteId = "remoteId"; string childId = "childId"; string subChildId = "subchildId"; var storage = new MetaDataStorage(this.engine, this.matcher, withValidation); var obj = new MappedObject("name", remoteId, MappedObjectType.Folder, null, null); var child = new MappedObject("child", childId, MappedObjectType.Folder, remoteId, null); var subchild = new MappedObject("subchild", subChildId, MappedObjectType.File, childId, null); storage.SaveMappedObject(obj); storage.SaveMappedObject(child); storage.SaveMappedObject(subchild); storage.RemoveObject(child); Assert.That(storage.GetObjectByRemoteId(remoteId), Is.EqualTo(obj)); Assert.That(storage.GetObjectByRemoteId(childId), Is.Null); Assert.That(storage.GetObjectByRemoteId(subChildId), Is.Null); }