好吧,我有一对多相关模型:
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public string ChildName { get; set; }
}
我想做的是清除 Parent.Children
并从数据库中删除相关的子实体。我已经尝试过:
数据库上下文类:
modelBuilder.Entity<Parent>()
.HasMany(p => p.Children)
.WithOptional()
.WillCascadeOnDelete(true);
这工作正常,但当我这样做时,我在数据库中仍然有冗余记录,其中包含 Parent_Id = null
字段
parent.Children.Clear();
repository.InsertOrUpdate(parent);
在我的存储库类中。当我这样做时也是同样的行为:
modelBuilder.Entity<Parent>()
.HasMany(pr => pr.Children)
.WithOptional(ri => ri.Parent)
.WillCascadeOnDelete(true);
在 Child
类中有额外的 Parent
属性
public class Child
{
...
public Parent Parent { get; set; }
...
}
或者当我这样做的时候
modelBuilder.Entity<Child>()
.HasOptional(p => p.Parent)
.WithMany(p => p.Children)
.HasForeignKey(p => p.Parent_Id)
.WillCascadeOnDelete(true);
在 Child
类中有额外的 Parent_Id 属性
public class Child
{
...
public int Parent_Id { get; set; }
...
}
那么,如何正确配置级联删除呢?或者我应该如何删除那些子实体?我认为这是一项临时任务,但我只是遗漏了一些东西。
最佳答案
在 EF6 中,一种更快的操作方式是...
context.Children.RemoveRange(parent.Children)
关于c# - 如何删除 EF 代码优先数据库中的子一对多相关记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16654828/