2017-09-21 4 views
0

Auparavant, lors de la création d'une migration, la suppression en cascade était définie sur true, puis la base de données était mise à jour. Honnêtement, je n'ai pas remarqué que l'élimination en cascade était réglée sur vrai. Après plusieurs migrations appliquées à la base de données, j'ai besoin de mettre la cascade delete à false mais cela ne fonctionne pas, car elle continue à être supprimée en cascade.Cascade delete lorsque je l'ai défini sur false ne fonctionne pas dans Entity Framework 6

C'est celui-à-plusieurs je l'ai fait, où un client peut avoir de nombreux véhicules et un véhicule appartient à un client:

Ceci est ma classe client:

public class Customer { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Phone { get; set; } 
    public string Address { get; set; } 
    public List<Vehicle> Vehicles { get; set; } 

    public Customer() 
    { 
     Vehicles = new List<Vehicle>(); 
    } 
} 

C'est ma classe de véhicule:

public class Vehicle { 
    public int Id { get; set; } 
    public string Enrollment{ get; set; } 
    public string Chassis { get; set; } 
    public float? Kilometers{ get; set; } 
    public int? CylinderCapacity{ get; set; } 
    public Customer Customer { get; set; } 
    public int CustomerId{ get; set; } 
} 

Et voici ma configuration API Courant:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Vehicle>() 
     .HasRequired(v => v.Customer) 
     .WithMany(c => c.Vehicles) 
     .HasForeignKey(v => v.CustomerId) 
     .WillCascadeOnDelete(false);  
} 

Et la classe de migration est la suivante:

public partial class DisableDeleteOnCascade : DbMigration 
{ 
    public override void Up() 
    { 
     DropForeignKey("dbo.Vehicles", "CustomerId", "dbo.Customers"); 
     AddForeignKey("dbo.Vehicles", "CustomerId", "dbo.Customers", "Id"); 
    } 

    public override void Down() 
    { 
     DropForeignKey("dbo.Vehicles", "CustomerId", "dbo.Customers"); 
     AddForeignKey("dbo.Vehicles", "CustomerId", "dbo.Customers", "Id", cascadeDelete: true); 
    } 
} 

Pour une raison quelconque lorsque je supprime un client supprime toujours les véhicules, et je ne veux pas que le comportement. Qu'est-ce que je fais mal ici?

Répondre