循环或多个级联路径SQL Server

时间:2019-10-11 18:24:21

标签: sql-server asp.net-mvc

我在这个项目中使用dotnet和mvc。

在我的数据模型中,有多个级联路径,因此,标题出现错误。当我尝试将Orders表中的FK添加到Business表中时,就会发生这种情况。

我的数据模型:

  • 用户(UserId pk,...)
  • 业务(BusinessId pk,所有者fk到User(UserId),...)
  • 提供者(ProviderId fk到User(UserId),....)
  • 订单(订单ID pk,业务ID fk至业务(BusinessId),      ProviderId fk到Provider(ProviderId),      将CustomerId fk转换为User(UserId))。

例如,假设我有一个可以管理多个理发店的网络平台。每个理发店都是我数据库中的一家企业。我网站上的用户可以是客户(用户),理发店所有者(企业所有者)和理发师(提供者)。

现在,如您所知,从用户表到订单表有多个路径。

从订单到提供者的FK设置为​​在删除时设置为null。不过,由于我们拥有FK到企业版(拥有与用户连接的所有者),所以我仍然受阻。

错误:

  

执行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实现。

可选:我考虑过的想法:将orders表划分为3个表: 订单(订单编号pk,时间戳) CustomersOrder(Order_id fk,customer_Id) BusinessOrder(Orderid fk,businessID,ProviderId)

如果你们有任何想法,我很乐意听到:)

1 个答案:

答案 0 :(得分:-1)

我想我没有其他选择,我将Order的模型划分为3个模型:Orders,CustomerOrder,BusinessOrder = 3个表。