public void Do()
{
var kvp = this.Projects.Locate (delegate (object lkey, object lvalue) {
var lp = lvalue as Project;
return (lp != null && lp.Id == this.Project.Id);
});
this.Id = Convert.ToUInt32 (kvp.Key);
this.Projects.Delete (this.Id);
if (m_taskCache == null) {
m_taskCache = new List<Task> ();
/* XXX: We need a BDB index here to prevent all the damn
* deserialization.
*/
using (var cursor = Tasks.NewCursor ()) {
object key, value;
while (cursor.Get (BDB46.Cursor.Seek.Next, out key, out value))
if ((value as Task).ProjectId == Project.Id)
m_taskCache.Add (value as Task);
}
}
foreach (var task in m_taskCache)
TaskStorage.Remove (task);
}