簡體   English   中英

刪除所有子級已連接的實體

[英]Delete entity with all childs connected

我一直在嘗試從數據庫中正確刪除單個項目 ,以滿足FK限制。

我得到了Item實體(用於EF),該實體被多個其他人引用

public class Item
{
    public int Id {get; set;}
    ...
    public FoodItem FoodItem { get; set; }
    public LocalItem LocalItem { get; set; }
    public ItemToCategory ItemToCategory { get; set; }
}

其中, Id項目的 PK,其他實體是FK。

我看到兩種刪除實體和子級的可能方法:

  1. 通過LINQ查詢獲取連接的實體;
  2. CascadeDelete約束給我的Item

首先

到目前為止,我的查詢必須像

Item basicItem = await db.Items.Include(b => b.LocalItem)
                            .Include(b => b.FoodItem)
                            .Include(b => b.ItemToCategory)
                            .SingleOrDefaultAsync(p => p.Id == productId);

db.Items.Remove(basicItem);
await db.SaveChangesAsync();

但是我得到Source sequence contains more than one element錯誤,並且不知道為什么。

第二

仍然是一種方法,但是我想暫停一會兒。 因為我看到了,就像不太安全的方法一樣。

因此,返回主題:如何在連接所有子節點的情況下刪除我的實體?

最后,我選擇在連接的實體上設置級聯刪除約束

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM