Entity Framework The migration of cascade delete is always true, even WillCascadeOnDelete (false) in the configuration

Why is the relationship with WillCascadeOnDelete (false) defined in the configuration always true in the generated migration?

Here is the configuration code

 public class PartySuppliesConfiguration:EntityTypeConfiguration<PartySupplies>
{
    public PartySuppliesConfiguration()
    {
        HasKey(x => x.Id);
        HasRequired(x=>x.Supplier).WithMany().HasForeignKey(x=>x.SupplierId).WillCascadeOnDelete(false);
        HasRequired(x => x.Product).WithMany().HasForeignKey(x => x.ProductId).WillCascadeOnDelete(false);
        HasRequired(x => x.Currency).WithMany().HasForeignKey(x => x.CurrencyId).WillCascadeOnDelete(false);
        HasRequired(x => x.CreatedUser).WithMany().HasForeignKey(x => x.CreatedUserId).WillCascadeOnDelete(false);
        Property(x => x.UnitPrice).HasColumnType("Money");
    }
}

and here is the generated migration

 public override void Up()
    {
        CreateTable(
            "PartySupplies",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    SupplierId = c.Int(nullable: false),
                    ProductId = c.Int(nullable: false),
                    UnitPrice = c.Decimal(nullable: false, precision: 18, scale: 2),
                    CurrencyId = c.Int(nullable: false),
                    FromDate = c.DateTime(nullable: false),
                    ThruDate = c.DateTime(),
                    CreatedUserId = c.Int(nullable: false),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("Parties", t => t.SupplierId, cascadeDelete: true)
            .ForeignKey("Products", t => t.ProductId, cascadeDelete: true)
            .ForeignKey("Curencies", t => t.CurrencyId, cascadeDelete: true)
            .ForeignKey("Users", t => t.CreatedUserId, cascadeDelete: true)
            .Index(t => t.SupplierId)
            .Index(t => t.ProductId)
            .Index(t => t.CurrencyId)
            .Index(t => t.CreatedUserId);

    }
+5
source share
1 answer

This may be a dumb question, but did you redefine the OnModelBuilding method in DbContext and add it modelBuilder.Configurations.Add( new PartySuppliesConfiguration( ) );? Are PartySuppliersthere any DataAnnotations that can override your entity configuration class? Or maybe it is derived from another class where cascadeondelete is set to true?

+1
source

All Articles