2017-06-28 5 views
0

EntityFramework 6.0コードの最初のフレームワークを使用していて、 'update-database'を実行しようとすると次のエラーが発生します。テーブル 'RateTowers'のFOREIGN KEY制約 'FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId'

テーブル 'RateTowers'にFOREIGN KEY制約 'FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId'を導入すると、サイクルまたは複数のカスケードパスが発生することがあります。 NO DELETE NO ACTIONまたはUP UP NO NO ACTIONを指定するか、他のFOREIGN KEY制約を変更してください。

私もDBコンテキストクラスに次のコード

オーバーライドボイドOnModelCreating(DbModelBuilder ModelBuilderの) {base.OnModelCreating(ModelBuilderのを)保護を含んでいました。

modelBuilder.Entity<Dimension>().HasMany(dim => 
     dim.DimensionValues). 
     WithRequired(). 
     WillCascadeOnDelete(false); 

    modelBuilder.Entity<Dimension>().HasMany(dim => 
     dim.RateTowers). 
     WithRequired(). 
     WillCascadeOnDelete(false); 

    modelBuilder.Entity<Dimension>().HasMany(dim => 
     dim.DimensionValues). 
     WithRequired(). 
     WillCascadeOnDelete(false); 

}

私はあなたのModelBuilderのエントリ3は、最初のものと同じである間違っていない場合、私は私のデータモデルData Model

答えて

0

まずのスクリーンショットを添付しています。 第2に、データモデルから、RateTowersはDimensionテーブルとDimensionValueテーブルを参照します。これは冗長なので、DimensionValueIdはディメンションも提供します。そして、もし私が次元テーブルを削除/更新しようとすると、カスケードされた場合、RateTowersテーブルとDimensionValueテーブルを削除/更新し、再びRateTowersテーブルを削除/更新することになります。あなたは削除時にカスケードしないと宣言しましたが、更新カスケードはエラーメッセージのように "複数のカスケードパス"につながります。

+0

ありがとうございます。モデルを再構成したところ、Dimension ValueからDImensionに本質的に到達することができます。 –

関連する問題