У меня есть сценарий по умолчанию, где у вас есть Category
себя, RootCategory
и ChildCategories
. Как я могу указать, что мой свободный модель-строитель каскадирует все дочерние категории при удалении?Как установить каскад на отношения со ссылками?
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Category RootCategory { get; set; }
public virtual ICollection<Category> ChildCategories { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
То, что я пытался
Я пытался использовать свободно модель строитель, но это один дает ошибку, когда я пытаюсь обновить базу данных.
Представляя ограничение внешнего ключа «» FK_dbo.Categories_dbo.Categories_RootCategory_Id на столе «Категории» может вызвать циклов или несколько путей каскада. Укажите ON УДАЛИТЬ НЕТ ДЕЙСТВИЙ или НЕ ОБНОВИТЬ НЕТ ДЕЙСТВИЙ, или изменить другие ограничения FOREIGN KEY .
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Category>().HasOptional(x => x.RootCategory).WithMany(x => x.ChildCategories).WillCascadeOnDelete(true);
}
Каким образом Parent_Id выставлен, решит проблему? Он уже имеет Parent_Id в базе данных, которую использует EF. – sed
@Steve Я отредактировал свой ответ. –