2017-06-28 76 views
0

我正在使用EntityFramework 6.0代碼第一個框架,並在嘗試「更新數據庫」時不斷收到以下錯誤。表'RateTowers'上的FOREIGN KEY約束'FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId'

引入表'RateTowers'上的FOREIGN KEY約束'FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId'可能會導致循環或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY約束。

我也包括在我的DB Context類下面的代碼

保護覆蓋無效OnModelCreating(DbModelBuilder模型構建器) { base.OnModelCreating(模型構建);

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); 

}

我重視我的數據模型的屏幕截圖Data Model

回答

0

首先,如果我沒有記錯的模型構建器第3項是一樣的第一個。 其次,您的數據模型中,RateTowers引用了Dimension表和DimensionValue表。這是多餘的,因此DimensionValueId會給你維度。如果我嘗試刪除/更新Dimension表,它會導致(如果級聯)刪除/更新RateTowers和DimensionValue表,這又會導致再次刪除/更新RateTowers表。您在刪除時聲明瞭不級聯,但更新級聯將導致錯誤消息中的「多個級聯路徑」。

+0

感謝您的評論。我重新構建了我的模型,並且我可以固有地從維度價值中獲得維度。 –