You can use different object events to initiate cascaded behavior on update, activate, delete. The following example shows how to ensure that all the referenced objects are deleted when the parent object is deleted:
01public static void TestCascadedDelete() 02
{ 03
FillContainer(); 04
IObjectContainer container = OpenContainer(); 05
try { 06
// check the contents of the database 07
IObjectSet result = container.Get(null); 08
ListResult(result); 09
10
IEventRegistry registry = EventRegistryFactory.ForObjectContainer(container); 11
// register an event handler, which will delete the pilot when his car is Deleted 12
registry.Deleted += new ObjectEventHandler(OnDeleted); 13
// delete all the cars 14
result = container.Query(typeof(Car)); 15
while(result.HasNext()) { 16
container.Delete(result.Next()); 17
} 18
// check if the database is empty 19
result = container.Get(null); 20
ListResult(result); 21
} finally { 22
CloseContainer(); 23
} 24
}
1private static void OnDeleted(object sender, ObjectEventArgs args) 2
{ 3
Object obj = args.Object; 4
if (obj is Car) 5
{ 6
OpenContainer().Delete(((Car)obj).Pilot); 7
} 8
}
01Public Shared Sub TestCascadedDelete() 02
FillContainer() 03
Dim container As IObjectContainer = OpenContainer 04
Try 05
' check the contents of the database 06
Dim result As IObjectSet = container.Get(Nothing) 07
ListResult(result) 08
Dim registry As IEventRegistry = EventRegistryFactory.ForObjectContainer(container) 09
' register an event handler, which will delete the pilot when his car is Deleted 10
AddHandler registry.Deleted, AddressOf OnDeleted 11
' delete all the cars 12
result = container.Query(GetType(Car)) 13
While result.HasNext 14
container.Delete(result.Next) 15
End While 16
' check if the database is empty 17
result = container.Get(Nothing) 18
ListResult(result) 19
Finally 20
CloseContainer() 21
End Try 22
End Sub
1Private Shared Sub OnDeleted(ByVal sender As Object, ByVal args As ObjectEventArgs) 2
Dim obj As Object = args.Object 3
If TypeOf obj Is Car Then 4
OpenContainer.Delete(CType(obj, Car).Pilot) 5
End If 6
End Sub