所以,我有一个很好的域模型。存储库处理数据访问,什么不处理。出现了一个新的要求,表明需要使用删除记录原因。到目前为止,删除一直很简单=> Entity.Children.Remove(孩子)。由于我的ORM工具正在处理状态管理,因此没有发生内部更改跟踪。但是,我不确定exactyl如何处理这个问题。

1)我可以在父实体中保留一个已删除的子集合,并将更改跟踪从nHibernate中拉出来并自行处理。

2)??????

有帮助吗?

解决方案

好吧,这听起来很疯狂,我会再拍一次 - 尽管我可能因为nHibernate使用不当而打屁股。在删除之前,为什么不选择要删除的子项(您的ID已经正确?)并转换为将用于将删除记录到表中的任何实体。将原因添加到实体并保存 - 然后继续删除。最好的部分,您可以使用通用实体,即“auditInfo”。对于转换的结果,您可以在事务中执行此操作,以便在出现故障时可以回滚所有内容!好吧,也许是疯狂但有创意吧?

其他提示

你能否实施 IInterceptor界面并覆盖onDelete功能以从实体中提取所需信息并在删除之前将其发送到记录器(当然使用NHibernate)?

示例

如果该特定实体类型的删除相对较少,我会向实体添加一个标记,以便将其标记为逻辑“删除”。而不是实际删除该行。然后,应用程序必须在正常情况下处理这些实体的隐藏。

如果这会导致不可接受的“陈旧”数量,行 - 我会建议类似于沃森的回答。根据具体要求,您可能会记录已删除的数据以及额外的“原因”。字段直接从应用程序的某个地方。从审计的角度来看,使用拦截器更透明,更令人满意,但单独的删除日志(表,数据库,文件)可能更简单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top