如何检查外键以限制SoftDelete?

时间:2018-04-05 14:07:07

标签: entity-framework foreign-keys aspnetboilerplate referential-integrity soft-delete

我想知道在使用SoftDelete ASP.NET Boilerplate时是否可以检查FK。

示例

假设这些表:

Roles: RoleId (PK) - Description
Users: UserId (PK) - Name - RoleId (FK with Roles)

数据:

Roles
1 - admin
2 - guest
Users
1 - admin - 1
2 - john - 2

如果已将RoleId 1分配给现有User,则不应将其删除。

提前致谢。

2 个答案:

答案 0 :(得分:0)

简单地说,你的目标是没有意义的。 SoftDelete功能将记录标记为已删除,并且不会将其物理删除。这就像Windows中的回收站。这样你就可以随时取消删除它。从数据库的角度来看,它的关系是一致的。因为表中有数据。

溶液;当您阻止用户删除正在使用的记录时,您必须根据业务规则自行验证。

答案 1 :(得分:0)

软删除只是设置一个标记,将记录标记为已删除。

在ABP中,您可以在ApplyAbpConceptsForDeletedEntity的{​​{1}}中编写自己的支票:

DbContext

请注意,模板的RoleAppService实际上会在删除用户之前删除该用户。