【问题标题】:FOREIGN KEY constraint 'FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId' on table 'RateTowers'表“RateTowers”上的 FOREIGN KEY 约束“FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId”
【发布时间】:2017-12-02 03:13:22
【问题描述】:

我正在使用 EntityFramework 6.0 代码优先框架,并在尝试“更新数据库”时不断收到以下错误。

在表“RateTowers”上引入 FOREIGN KEY 约束“FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

我还在我的 DB Context 类中包含以下代码

受保护的覆盖无效 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);

}

我附上了我的数据模型Data Model的屏幕截图

【问题讨论】:

    标签: c# .net entity-framework foreign-key-relationship


    【解决方案1】:

    首先,如果我没记错的话,您的模型构建器条目 3 与第一个相同。 其次,从您的数据模型中,RateTowers 引用 Dimension 表和 DimensionValue 表。这是多余的,因此 DimensionValueId 也会为您提供维度。如果我尝试删除/更新 Dimension 表,它将导致(如果级联)删除/更新 RateTowers 和 DimensionValue 表,这反过来又会导致再次删除/更新 RateTowers 表。您在删除时声明了无级联,但更新级联将导致“多个级联路径”,如错误消息中所示。

    【讨论】:

    • 感谢您的评论。我重新构建了我的模型,我可以从维度值固有地得到维度。
    猜你喜欢
    • 2014-03-20
    • 2023-03-22
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2017-12-28
    相关资源
    最近更新 更多