[英]Entity Framework POCO - Possible to set Cascade?
我有彼此鏈接的基本遞歸類別。 當我嘗試刪除有孩子的類別時,出現通常的錯誤。
我一直做的工作是遞歸刪除所有子級的函數,但是我不知道我是否可以以某種方式將CASCADE ON DELETE設置為使用EF的POCO類,這樣就不需要實現自己的刪除機制了?
DELETE語句與SAME TABLE REFERENCE約束“ FK_dbo.Categories_dbo.Categories_RootCategoryId”沖突。 在數據庫“網站”的表“ dbo.Categories”的列“ RootCategoryId”中發生了沖突。
public class Category
{
public int Id { get; set; }
public int? RootCategoryId { get; set; }
public virtual Category RootCategory { get; set; }
public virtual ICollection<Category> ChildCategories { get; set; }
}
目前,我在刪除類別之前先刪除關系。 但是,如果我想遞歸刪除所有子類別怎么辦? 只有級聯他們才能達到目的。
public ActionResult Delete(int id)
{
var category = _db.Categories.Single(x => x.Id == id);
if (category.RootCategoryId == null)
{
category.ChildCategories.ToList().ForEach(x => x.RootCategoryId = null);
}
else
{
category.ChildCategories.ToList().ForEach(x => x.RootCategoryId = category.RootCategoryId);
}
_db.Categories.Remove(category);
_db.SaveChanges();
return RedirectToAction("Index", "Category");
}
我要解決此問題的方法是使用OnModelCreating Fluent API。
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasMany(u => u.ProjectAuthorizations)
.WithRequired(a => a.UserProfile)
.WillCascadeOnDelete(true);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.