2017-09-21 79 views
0

以前,在創建遷移時,級聯刪除設置爲true,然後更新數據庫。我真的沒有注意到級聯消除設置爲true。 將數個遷移應用於數據庫後,我需要將級聯刪除設置爲false,但它不起作用,因爲它會繼續級聯刪除。當我將它設置爲false時級聯刪除在實體框架中不起作用6

這是一個一對多的關係,我做了,在這裏客戶可以有許多車輛和車輛屬於一個客戶:

這是我的Customer類:

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

這是我的車類:

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

這是我流利的API配置:

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

而遷移類是這樣的:

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

出於某種原因,當我刪除客戶仍刪除車輛,我不希望這樣的行爲。我在這裏做錯了什麼?

回答

相關問題