.net - 在表上引入 FOREIGN KEY 约束可能会导致循环或多个级联路径,如何解决?
问题描述
我必须使用 Id、UserId、ProviderId、CityId 属性创建新的 ProviderAdmins 表。我在 db 中有很多表,但现在只关注这 4 个。当我删除 Provider 或 User ProviderAdmins 时也应该删除。 我收到以下错误:在表“ProviderAdmins”上引入 FOREIGN KEY 约束“FK_ProviderAdmins_Providers_ProviderId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束或索引。请参阅以前的错误。 我该如何解决?
public class User
{
public string Id { get; set; }
public virtual ProviderAdmin ProviderAdmin { get; set; }
}
public class Provider
{
public long Id { get; set; }
public virtual ICollection<ProviderAdmin> ProviderAdmins { get; set; }
}
public class City
{
public long Id { get; set; }
public virtual ICollection<ProviderAdmin> ProviderAdmins { get; set; }
}
public class ProviderAdmins
{
public long Id { get; set; }
[Required]
public string UserId { get; set; }
public virtual User User { get; set; }
[Required]
public long ProviderId { get; set; }
public virtual Provider Provider { get; set; }
public long CityId { get; set; }
public virtual City City { get; set; }
}
builder.Entity<ProviderAdmin>()
.HasOne(x => x.City)
.WithMany(x => x.ProviderAdmins)
.HasForeignKey(x => x.CityId)
.OnDelete(DeleteBehavior.NoAction);
builder.Entity<ProviderAdmin>()
.HasOne(x => x.Provider)
.WithMany(x => x.ProviderAdmins)
.HasForeignKey(x => x.ProviderId)
.OnDelete(DeleteBehavior.Cascade);
builder.Entity<ProviderAdmin>()
.HasOne(x => x.User)
.WithOne(x => x.ProviderAdmin)
.HasForeignKey<ProviderAdmin>(x => x.UserId)
.OnDelete(DeleteBehavior.Cascade);
解决方案
推荐阅读
- python - 烧瓶防止形式注射
- git - 有没有办法将拉取请求从 bitbucket hg repo 迁移到 github git repo?
- python-3.x - 模块“hnswlib”没有属性“索引”
- python - Google Cloud Translate API 客户端属性
- r - 带有可选过滤的 Shiny 中的反应性数据表
- amazon-web-services - 如何使用 S3 和 Namecheap 托管 SSL 静态站点?
- javascript - PHP & MySQL & JS 可编辑表不会更新记录
- git - 运行 git diff 时防止 /dev/null/ 转储
- php - array_search 具有两个属性的多维数组
- python - 有没有办法将两个数字加在一起创建一个两位数?