0

我有服務和Lexikon之間的一對一關係,而服務有Lexikon的外鍵。我的服務不需要Lexikon,所以我將LexikonID設爲空。但是,我的Lexikon只能在與服務相關的情況下才能存在,因此我製作了導航屬性[必填]。我使用Code First,因此EF構建了我的數據庫。c# - 實體框架核心層疊刪除一對一關係

public class Service 
{ 

    public int ServiceID { get; set; } 

    //Foreignkey 
    public int? LexikonID { get; set; } 

    //Navigation Properties 

    public Lexikon Lexikon { get; set; } 
} 

public class Lexikon 
{ 
    public int LexikonID { get; set; } 

    //Navigation Properties 
    [Required] 
    public SoftwareService SoftwareService { get; set; } 

} 

我想表Lexikon自動刪除數據刪除我的服務可惜我不知道如何做到這一點,因爲我是新來的EF。

我想這個代碼的DbContext:

 modelBuilder.Entity<SoftwareService>() 
       .HasOne(l => l.Lexikon) 
       .WithOne(s => s.SoftwareService) 
       .HasForeignKey<SoftwareService>(l => l.LexikonID) 
       .OnDelete(DeleteBehavior.Cascade); 

但是當我刪除我的服務表Lexikon的數據仍然會在這。另一方面,當我刪除lexikon時,它會自動刪除很好的服務,但我也希望當我刪除我的服務時,它會發生在我的Lexikon上。

不幸的是我不熟悉OnDelete-Method,所以我希望有人能幫助我。

回答

0

您是從模型生成數據庫嗎?你必須,因爲EF生成一個ON DELETE CASCADE約束。否則,您需要手動添加它。我在EF pre-Core上爲這個問題寫了一篇文章,但它仍然適用:https://weblogs.asp.net/ricardoperes/entity-framework-pitfalls-cascade-deletes

+0

是的我的數據庫是從我的模型生成的entityframework –

+0

在這種情況下,你應該有約束。沒有什麼更多的了,真的。 –

+0

還有一件事:你將屬性與代碼配置混合在一起,後者需要流行,所以我認爲你需要指出其中一個端點是必需的。 –

相關問題