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);
}
}
出於某種原因,當我刪除客戶仍刪除車輛,我不希望這樣的行爲。我在這裏做錯了什麼?