我想知道在使用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
,则不应将其删除。
提前致谢。
答案 0 :(得分:0)
简单地说,你的目标是没有意义的。 SoftDelete功能将记录标记为已删除,并且不会将其物理删除。这就像Windows中的回收站。这样你就可以随时取消删除它。从数据库的角度来看,它的关系是一致的。因为表中有数据。
溶液;当您阻止用户删除正在使用的记录时,您必须根据业务规则自行验证。
答案 1 :(得分:0)
软删除只是设置一个标记,将记录标记为已删除。
在ABP中,您可以在ApplyAbpConceptsForDeletedEntity
的{{1}}中编写自己的支票:
DbContext
请注意,模板的RoleAppService
实际上会在删除用户之前删除该用户。