Как удалить дочернюю одну для многих связанных записей в первой базе данных кода EF?
Ну, у меня есть модель «один ко многим»:
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);
с дополнительнымParent
недвижимость вChild
класс
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);
с дополнительным свойством Parent_Id вChild
класс
public class Child
{
...
public int Parent_Id { get; set; }
...
}
Итак, как правильно настроить каскадное удаление? Или как я должен удалить эти дочерние объекты? Я предполагаю, что это случайное задание, но я что-то упускаю.