2011-03-20 39 views
14

在不公開外鍵的情況下執行一對多關係的刪除時,EF刪除父記錄並嘗試將子記錄上的外鍵清空。這當然會導致錯誤,因爲外鍵不可爲空。將外鍵添加到子類會覆蓋此行爲,但我寧願不公開它。在不暴露外鍵的情況下啓用EF Code First中的級聯刪除

例如,給定以下兩個類,我不希望JobId作爲Project類的屬性。

public class Job : ModelBase 
{ 
    [Required] 
    [StringLength(100)] 
    public string Company { get; set; } 

    [Required] 
    [StringLength(100)] 
    public string JobTitle { get; set; } 

    public ICollection<Project> Projects { get; set; } 
} 

public class Project : ModelBase 
{ 
    [Required] 
    [StringLength(100)] 
    public string Name { get; set; } 

    [Required] 
    public string Summary { get; set; } 

    public int JobId { get; set; } 
} 

有沒有一種方法,使級聯刪除EF代碼第一次沒有使外鍵關係的很多副作用?

回答

14

是!刪除的JobId並添加以下內容:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Job>().HasMany(j => j.Projects).WithRequired(); 
    } 

在數據庫中,這將增加級聯的PK/FK關係刪除。

(我假設你的ModelBase有一個整數Id =)

+0

完美。謝謝! – 2011-03-20 06:47:00

+0

不是我所說的明顯... – 2013-09-05 09:26:49

相關問題