首页 > 解决方案 > EF Core 级联删除

问题描述

上下文:Visual Studio、Blazor .NET 5、Azure SQL Server

我有一个有两个 FK 的实体。如果我删除 FK 表中的一条记录,我会收到典型的引用错误。在https://docs.microsoft.com/en-us/ef/core/saving/cascade-delete中似乎说 Cascade Delete 是默认设置。当我生成一个新的迁移(添加迁移级联)时,没有

.OnDelete(DeleteBehavior.Cascade)
.IsRequired();

...附加到生成的迁移文档中相关实体的 FK 属性。

  1. 实体类中是否有可以应用于FK属性的Attribute?

  2. 在代码中还有其他方法可以做到这一点吗?

  3. 如何修改迁移文档以巩固 th?

标签: c#sql-serverentity-framework

解决方案


这就是我最终做的事情..我在代码中做到了

    public async Task DeleteRound(int Id)
   {
       var round = _context.Rounds.Where(e => e.Id==Id).Include(e => e.Activitys).First();
       _context.Rounds.Remove(round);
       await _context.SaveChangesAsync();
   }

我必须在 Round 类中添加以下内容:

   public IList<Activity> Activitys { get; } = new List<Activity>();

无需进一步的代码。无需像上面那样填充列表。似乎 EF 正在无缝地做到这一点。无需注释迁移文件。


推荐阅读