Search code examples
c#fluent-migrator

Can a cascade delete rule be added in a migration?


In a FluentMigrator migration, if I'm defining a relationship, say:

Create.Table("RelatedTable")
    .WithColumn("RelatedTableId").AsGuid().PrimaryKey()
    .WithColumn("MainTableId").AsGuid().NotNullable();
    .WithColumn("SomeInfo").AsString().NotNullable();

Create.Table("MainTable")
    .WithColumn("MainTableId").AsGuid().PrimaryKey()
        .ReferencedBy("FK_RelatedTable_RelatedTableId", "RelatedTable", "MainTableId")
    .WithColumn("AField").AsInt64().NotNullable()
    .WithColumn("AnotherField").AsString().NotNullable();

Is there any way to define cascading delete type of relationship between them? Eg, if you delete something from MainTable, any related records are also deleted?


Solution

  • You can create a separate foreign key in the same migration like this, with the option of setting your cascading rules:

    Create.ForeignKey("FK_RelatedTable_RelatedTableId")
                   .FromTable("RelatedTable").ForeignColumn("RelatedTableId")
                   .ToTable("MainTable").PrimaryColumn("MainTableId")
                   .OnDeleteOrUpdate(System.Data.Rule.Cascade);
    

    Hope this helps.