繁体   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