2017-01-18 12 views
3
public class Station : IEntitie 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    public virtual ICollection<RegulatorySchedule> RegulatoryScheduleDispatchStations { get; set; }  

    public virtual ICollection<RegulatorySchedule> RegulatoryScheduleDestinationStations { get; set; } 
} 

public class RegulatorySchedule : IEntitie 
{ 
    [Key] 
    public int Id { get; set; } 

    public virtual Station DispatchStation { get; set; }  

    public virtual Station DestinationStation { get; set; }  
} 


protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
     modelBuilder.Entity<RegulatorySchedule>() 
      .HasOne(s => s.DestinationStation) 
      .WithMany(s => s.RegulatoryScheduleDestinationStations) 
      .OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Restrict); 

     modelBuilder.Entity<RegulatorySchedule>() 
      .HasOne(s => s.DispatchStation) 
      .WithMany(s => s.RegulatoryScheduleDispatchStations) 
      .OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Restrict); 
} 

データベースは、移行時に、Restrict OnDelete (Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Restrict)を削除するときの動作をはっきりと明らかにした場合にのみ作成されます。 はそれ以外の場合は、例外がスローされます:エンティティフレームワークコアカスケード削除1対多のリレーションシップ

「FOREIGN KEY制約 を紹介 'FK_RegulatorySchedules_Stations_DispatchStationId' テーブル上 'RegulatorySchedules' サイクルまたは複数のカスケードパスを引き起こす可能性があり 指定ON NO ACTIONまたはUPDATE ON NO ACTIONを削除しない、または。他の FOREIGN KEY制約を変更してください。

テーブルのステーションステーションとテーブル関連プロパティのRegulatorySchedules DispatchStationとDestinationStationがNULLにさらされている必要があります。 Restrictオプション私は置くことができないSetNullを削除すると例外があります。 する方法を教えてください?

答えて

4

説明「問題」はEntity Frameworkとは関係ありません。これはMS SQL Server自体の制限です。いくつかのFKを持つテーブルには、カスケード deleteのうちの1つのみがあります。

したがって、両方のFKにカスケードが必要になるとすぐに、そのような「クリーンアップ」をコードに実装する必要があります。 DeleteBehavior.Restrict、コントローラ/サービスを削除する前に1つ(または両方)のFKを設定するStation手動ですべてを検索して削除するRegulatorySchedule

+0

アドオンの移行が行われていますが、エラー)。 一般的に、手動による削除に関連するオブジェクトと、動作が異なるSQLサーバーがあるかどうかは明らかです。 – Aldmi

関連する問題