【发布时间】:2025-12-22 11:05:13
【问题描述】:
我在这个项目中使用 dotnet 和 mvc。
在我的数据模型中有多个级联路径,因此我在标题中遇到错误。当我尝试将 FK 从 Orders 表添加到 Business 表时会发生这种情况。
我的数据模型:
- 用户 (UserId pk , ...)
- 业务(BusinessId pk,所有者 fk 到 User(UserId),...)
- Provider (ProviderId fk to User(UserId),....)
- 订单(OrderId pk,BusinessId fk 到 Business(BusinessId), ProviderId fk 到 Provider(ProviderId), CustomerId fk 到 User(UserId))。
例如,假设我有一个可以管理多个理发店的网络平台。每个理发店都是我数据库中的一个企业。我网站中的用户可以是客户(User)、理发店老板(Business owner)和理发师(Provider)。
现在,您可以理解,从 user 表到 order 表有多个路径。
从 Order 到 Provider 的 FK 设置为 on delete 设置为 null。不过,因为我们有一个 FK to Business(它有一个连接到用户的所有者),所以我仍然卡住了。
错误:
执行 DbCommand 失败 (16ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
创建表 [订单]
…… );在表“Order”上引入 FOREIGN KEY 约束“FK_Order_Business_BusinessId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
无法创建约束或索引。查看以前的错误。
正在寻找 dotnet 级别的解决方案,例如更新模型或迁移文件。我听说过触发器,但不知道如何通过 asp 实现它。
可选:我想到的想法:将订单表分为 3 个表: Orders(Orderid pk,timestamp) CustomersOrder(Order_id fk, customer_Id) BusinessOrder(Orderid fk,businessID,ProviderId)
如果你们有任何想法,我很乐意听到:)
【问题讨论】:
-
您说您遇到了错误,但您没有告诉我们您用于获得所述错误的 SQL,或者错误是什么。如果我们不知道您在做什么或问题是什么,我们将无法帮助您。
-
我认为这很清楚,但我也会将其添加到主帖中。当我尝试将 fk 从订单添加到业务时出现错误。
-
不清楚,没有。你的句子说“我收到了这个错误。” 然后你永远不会产生那个错误......你也没有给出产生它的SQL。
-
我正在使用 mvcc 和 dotnet,因此它是为我生成的。不过,我在帖子中提到它在尝试添加 fk 时会发生。
-
@Larnu 我希望现在很清楚