簡體   English   中英

在 EF 中定義一個實體,在刪除時保留相關數據

[英]Define an entity in EF that keeps related data on delete

我有兩個實體,User 和 StockMovement。 在我的系統中,用戶可以從存儲中添加或刪除庫存,在這樣做時,應該創建一個 StockMovement,引用所述用戶並包含有關用戶執行的移動的詳細信息。

我還希望這個 StockMovement 在我的數據庫中保留,即使用戶被刪除也是如此。 這意味着如果我的用戶被刪除,引用他的 StockMovements 應該被保留。

我正在使用 EF 來處理我的持久性。 這樣,當我刪除一個用戶時,由於 StockMovement 對用戶有一個外鍵約束,我的 StockMovement 實體將丟失該用戶,使其變得無用。 但我想在 StockMovement 中保留已刪除用戶的用戶名。

有什么辦法可以實現這種行為嗎?

我建議不要真正刪除用戶。 相反,將它們標記為 deleted 如果您需要刪除他們的個人信息 (GDPR),您可以對其進行編輯(將他們的部分信息替換為 *** 或其他內容)並仍然保留數據庫記錄。 這種技術稱為“軟刪除”。

這是一篇關於在 EF 核心中軟刪除實體的文章,可能會有所幫助:

Entity Framework Core 中的軟刪除

為了防止 EF 中的級聯刪除,據我所知,FK 必須可以為空(Guid?),即 Stock 表中的 FK 必須設置為 Null,然后才能刪除用戶 object 以防止這種情況發生,否則會導致引用大多數數據庫中的約束沖突。 有一些非常好的基本內容文檔:

https://learn.microsoft.com/en-us/ef/core/saving/cascade-delete

暫無
暫無

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

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