【发布时间】:2018-08-19 01:49:29
【问题描述】:
如何在 EF Core 2 的自引用表中实现级联删除(代码优先)?
(例如有一个评论表,一个人可以回复一个评论,这个回复可以由另一个人回复。)
public class Comment
{
public virtual int Id { get; set; }
public virtual int? ParentId { get; set; }
public Comment Parent { get; set; }
public virtual IList<Comment> Replies { get; set; }
public virtual string Description { get; set; }
public virtual Article Article { get; set; }
}
【问题讨论】:
-
很快 - 你不能。这不是真正的 EF 限制,而是 MS SqlServer 限制,因此适用于所有 MS 开发的框架,包括 EF (Core)。您必须关闭级联删除(我认为默认情况下对于这种类型的关系)并手动删除相关记录或使用数据库触发器。
-
一对多有一个解决方案。很可能,应该有一个解决方案。(mrshipley.com/2016/04/24/…) public class MyDBContext : DBContext { public DbSet
Blog { get;放; } 公共 DbSet 帖子 { 获取;放; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity () .HasOne(p => p.Blog) .WithMany(b => b.Posts) .OnDelete(DeleteBehavior.Cascade); } }
标签: entity-framework entity-framework-core entity-framework-migrations cascade ef-core-2.0