c# - EF Core - 具有自定义列名的同一个表的外键和覆盖的 onDelete 行为
问题描述
我有一个实体“用户”,用户可以在其中担任多个角色。所以一个这样的角色是 LineManager,我通过检查 LineManagerId(这是用户的 ID)来跟踪是否为任何用户分配了 LineManager,这里是用户实体:
public class User
{
public Guid ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[ForeignKey("LineManager")]
public Guid? LineManagerId { get; set; }
public virtual User LineManager { get; set; }
}
应用更改并在生成默认迁移的数据库中正常创建外键。但这是我的问题,当我覆盖默认迁移并将 onDelete 设置为 null 时,如下所示(在 OnModelCreating 方法上):
modelBuilder.Entity<User>().HasOne(u => u.LineManager)
.WithMany()
.HasForeignKey(e => e.LineManagerId)
.OnDelete(DeleteBehavior.SetNull);
应用迁移/更新数据库时出现以下错误:
在表 'Users' 上引入 FOREIGN KEY 约束 'FK_Users_Users_LineManagerId' 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束或索引。查看以前的错误
任何帮助深表感谢。
解决方案
推荐阅读
- c# - Azure WebJobs SDK 3,尝试添加 BlobTrigger 和相关连接字符串
- javascript - jsp 使用单个 servlet 在事件上动态且连续地填充三个选择框
- hyperledger-fabric - nodejs 链码存储在容器中的什么位置?它被编译了吗?
- fiware-orion - FIWARE Orion CB 订阅条件
- asp.net-web-api - 哪个 IIS 配置会导致特定调用出现“405 Method not allowed”错误?
- arrays - 是否可以将 countif 更改为数组 google sheet
- jquery - 从另一个站点加载 JQGrid
- ios - Swift 4 共享音频文件(UIDocumentInteractionController)
- multithreading - 为什么服务器有正在运行的线程时 fopen 会被阻塞?
- python - 如何处理布尔值所需的操作,如 Tensorflow 中的 tf.nn.fused_batch_norm