c# - 引入 FOREIGN KEY 约束可能会导致循环或多个级联
问题描述
我有以下 CODE FIRST 课程:
public class License
{
public License()
{
Assignments = new List<FeatureAssignment>();
}
public virtual List<FeatureAssignment> Assignments { get; set; }
public bool CanExpire { get; set; }
public int LicenseId { get; set; }
public int ProductId { get; set;}
public virtual Product Product { get; set; }
}
和
public class FeatureAssignment
{
public int FeatureAssignmentId { get; set; }
public virtual License License { get; set; }
public int LicenseId { get; set; }
public virtual LicenseFeature LicenseFeature { get; set; }
public int LicenseFeatureId { get; set; }
}
和
public class LicenseFeature
{
public int LicenseFeatureId { get; set; }
[Column(TypeName = "VARCHAR")]
[StringLength(450)]
[Index(IsUnique = true)]
public string FeatureName { get; set; }
public string Description { get; set; }
public int ProductId { get; set;}
public virtual Product Product { get; set;}
}
最后但并非最不重要的
public class Product
{
public int ProductId { get;set;}
public string ProductName { get;set;}
public virtual ICollection<License> Licenses { get; set; }
public virtual ICollection<LicenseFeature> LicenseFeatures { get; set; }
}
因此,目的是为专用产品提供许可证。每个许可证可以有多个功能分配,一个产品可以有多个许可证。
现在,当创建数据库时,我收到以下错误:
System.Data.SqlClient.SqlException:“在表“LicenseFeatures”上引入 FOREIGN KEY 约束“FK_dbo.LicenseFeatures_dbo.Products_ProductId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
也许我想念树木的福雷斯特,但我认为应该可以为专用许可证分配功能?我错过了外键的属性吗?
*********** 更新 **********
我提供了所有受影响的课程。在第一次发布中,缺少产品类-对此感到抱歉:-(
解决方案
推荐阅读
- mysql - 在 ado 记录集中设置变量 - VBA
- javascript - 通过遍历数组来响应更改的元素文本
- pentaho - Pentaho Kettle 刷新 mondrian 缓存
- javascript - 在用户脚本中运行 XMLHttpRequest 时,“无法添加 CORS 标头 'Origin'”
- node.js - Node.js 服务器中的安全漏洞
- ios - UISearchController dimsBackgroundDuringPresentation 已弃用
- php - sqlsrv_fetch_array 不返回正确的行
- python - group_by ModuleNotFoundError:没有名为“dfply.group”的模块;'dfply' 不是一个包
- c# - HttpContext.RequestServices 如何无法解析范围服务?
- api - 搜索仅使用确切的关键字 - woocommerce