我正在使用EF Core 3.1.1,但我认为这个问题适用于所有版本的EF。
看起来EF具有级联删除的功能-如果启用了它,并且依赖对象已加载到上下文中。
var blog = context.blogs.Include(x => x.Posts).First(x => x.BlogId == id);
context.blogs.Remove(blog);
上述语句会删除所有博客文章,然后是每个不同 SQL 语句的博客。
这正是我想要的,但使用 Code-First 时,它还会在数据库中启用级联删除并创建表。 (ON DELETE CASCADE
)
你能否在 EF 中启用级联删除,并依靠 EF 删除相关对象,而不必同时启用数据库级别的级联删除?(或者我的理解有误吗?)
原因是迁移失败,因为 SQL 不会在数据库中启用级联删除,因为它检测到多个级联路径(即使在模式中自然情况下不会出现多个级联路径)。
谢谢!