0

に削除します。私のサービスはLexikonを必要としないので、LexikonIDをnullにすることができました。しかし、Lexikonはサービスに関連する場合にのみ存在するので、ナビゲーションプロパティを[必須]にしました。私はコードファーストを使用していますので、EFは自分のデータベースを構築します。のC# - Entity FrameworkのコアカスケードサービスがLexikonへの外部キーを持っていながら、私はサービスとLexikon間の1対1の関係を持っている1対1関連

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-法に精通していませんよ。

答えて

0

あなたのモデルからデータベースを生成しましたか? EFはON DELETE CASCADE制約を生成するため、これを行う必要があります。それ以外の場合は、手動で追加する必要があります。私はEFプリコアのために、この問題に関する記事を書いたが、まだ適用されている:https://weblogs.asp.net/ricardoperes/entity-framework-pitfalls-cascade-deletes

+0

はい、私のデータベースが、その場合にはentityframework –

+0

によって私のモデルから生成され、あなたは制約を持つ必要があります。本当にそれ以上のことはありません。 –

+0

もう1つ:属性をコード構成と混合していますが、後者は流行しているので、エンドポイントの1つが必要であることを示す必要があると思います。 –

関連する問題