Cascaded Operation

Introduction

A foreign key with cascade delete means that if a record in the parent table is deleted, then the corresponding records in the child table will automatically be removed and this is called a cascade delete.

A foreign key with cascade delete can be created using RelationOptions object with cascad option in TableCollection.CreateRelation method.

Example

RelationOptions options = new RelationOptions(
                            cascadedDeletion: true);

var foreignIndex = this.members.CreateIndex(
                    new RedBlackTreeIndexFactory(),
                    m => m.GroupId);

this.Tables.CreateRelation(this.groups.PrimaryKeyIndex,
                        foreignIndex,
                        x => x.Value,
                        x => x, 
                        options);

The following example will delete the member as well when a group of Id equal to 1 is deleted.

Example

MyDatabase database = new MyDatabase();

database.Groups.Insert(new Group { Name = "Group 1" });
database.Groups.Insert(new Group { Name = "Group 2" });
database.Members.Insert(new Member { Id = 1, Name = "John Doe", GroupId = 1 });

database.Groups.Delete(new Group { Id = 1 });