5

Warum Beziehungen mit WillCascadeOnDelete (false) in der Konfiguration definiert sind, sind immer wahr in der generierten Migration? HierEntity Framework Migration Kaskadenlöschung ist immer wahr sogar WillCascadeOnDelete (false) in der Konfiguration

ist der Konfigurationscode

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"); 
    } 
} 

und hier ist die erzeugte 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); 

    } 

Antwort

1

Es könnte eine dumme Frage, aber haben Sie die OnModelBuilding Methode in DbContext außer Kraft gesetzt und das hinzugefügt modelBuilder.Configurations.Add(new PartySuppliesConfiguration());? Hat PartySuppliers irgendwelche DataAnnotations, die Ihre Entity-Konfigurationsklasse überschreiben könnten? Oder ist es von einer anderen Klasse abgeleitet, in der cascadeondele auf true gesetzt ist?

+0

Dies ist mir heute aufgefallen, als ich die 'modelBuilder.Configurations.Add (new MyMappingClass())' nicht zur OnModelBuilding-Methode hinzugefügt habe. – DDiVita

Verwandte Themen