C# 引入外键约束';FK_dbo.OrderDetails_dbo.Order_OrderId';在桌上';订单详情';可能导致

C# 引入外键约束';FK_dbo.OrderDetails_dbo.Order_OrderId';在桌上';订单详情';可能导致,c#,ef-code-first,entity-framework-6,cascading-deletes,C#,Ef Code First,Entity Framework 6,Cascading Deletes,我从PMC收到以下错误消息: 在表“OrderDetails”上引入外键约束“FK_dbo.OrderDetails_dbo.Order_OrderId”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束。请参阅前面的错误 我在这里找到了一个帖子,上面有一个被接受的答案,但它对我不起作用 这些是我的桌子: [Table("Order")] public class Order { [DatabaseGeneratedAtt

我从PMC收到以下错误消息:

在表“OrderDetails”上引入外键约束“FK_dbo.OrderDetails_dbo.Order_OrderId”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束。请参阅前面的错误

我在这里找到了一个帖子,上面有一个被接受的答案,但它对我不起作用

这些是我的桌子:

[Table("Order")]
public class Order
{
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key]
    public int Id { get; set; }

    [Required]
    public string UserId { get; set; }      

    public virtual List<OrderDetails> OrderDetails { get; set; }

    [ForeignKey("UserId")]
    public virtual ApplicationUser User { get; set; }
}


[Table("OrderDetails")]
public class OrderDetails
{
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key]
    public int Id { get; set; }

    [Required]
    public int OrderId { get; set; }


    [ForeignKey("OrderId")]
    public virtual Order Order { get; set; }
}
如果
OrderDetails
被删除,我不希望
Order
被删除。但另一种方式对我来说没问题

那么,我尝试的有什么问题吗?

使用
。WithMany()
没有参数在这里是错误的。因为
Order.OrderDetails
表示必须使用的关系的反向导航属性

.WithMany(o => o.OrderDetails)
这里使用不带参数的
.WithMany()
是错误的。因为
Order.OrderDetails
表示必须使用的关系的反向导航属性

.WithMany(o => o.OrderDetails)
这里使用不带参数的
.WithMany()
是错误的。因为
Order.OrderDetails
表示必须使用的关系的反向导航属性

.WithMany(o => o.OrderDetails)
这里使用不带参数的
.WithMany()
是错误的。因为
Order.OrderDetails
表示必须使用的关系的反向导航属性

.WithMany(o => o.OrderDetails)
我发现了问题

我一直在运行命令
updatedatabase
,该命令执行最后生成的迁移文件

我删除了我创建的最后一个迁移文件,并再次运行命令
Add migration
,该命令使用我最新的
modelBuilder.Entity()…
FluentApi
)代码更改生成了一个新文件

然后运行命令
updatedatabase
,它成功了

所以我不知道的是每次你在

protectedoverride void OnModelCreating(DbModelBuilder modelBuilder){…}

您需要再次执行添加迁移文件名。

我发现了问题

我一直在运行命令
updatedatabase
,该命令执行最后生成的迁移文件

我删除了我创建的最后一个迁移文件,并再次运行命令
Add migration
,该命令使用我最新的
modelBuilder.Entity()…
FluentApi
)代码更改生成了一个新文件

然后运行命令
updatedatabase
,它成功了

所以我不知道的是每次你在

protectedoverride void OnModelCreating(DbModelBuilder modelBuilder){…}

您需要再次执行添加迁移文件名。

我发现了问题

我一直在运行命令
updatedatabase
,该命令执行最后生成的迁移文件

我删除了我创建的最后一个迁移文件,并再次运行命令
Add migration
,该命令使用我最新的
modelBuilder.Entity()…
FluentApi
)代码更改生成了一个新文件

然后运行命令
updatedatabase
,它成功了

所以我不知道的是每次你在

protectedoverride void OnModelCreating(DbModelBuilder modelBuilder){…}

您需要再次执行添加迁移文件名。

我发现了问题

我一直在运行命令
updatedatabase
,该命令执行最后生成的迁移文件

我删除了我创建的最后一个迁移文件,并再次运行命令
Add migration
,该命令使用我最新的
modelBuilder.Entity()…
FluentApi
)代码更改生成了一个新文件

然后运行命令
updatedatabase
,它成功了

所以我不知道的是每次你在

protectedoverride void OnModelCreating(DbModelBuilder modelBuilder){…}


您需要再次执行
addmigrationfilename

我也尝试过,但它给出了完全相同的错误消息。然后我尝试了没有参数的方法。我也尝试了这个方法,但它给出了完全相同的错误消息。然后我尝试了没有参数的方法。我也尝试了这个方法,但它给出了完全相同的错误消息。然后我尝试了没有参数的方法。我也尝试了这个方法,但它给出了完全相同的错误消息。然后我试着没有参数。