我正在使用 LLBL Gen Pro v2.6 并试图创建一种审计对数据库所做更改的方法。现在,我知道 LLBL Gen 使用 AuditorBase 和依赖注入内置了审计功能。我的问题是;我不仅需要跟踪 LLBL Gen 公开为可审计的内容,还需要跟踪进行更改的用户。据我所见,没有一种内置的方式来收集这些信息。有没有人使用过 LLBL Gen 的内置审计并确定了一种方法来做到这一点?
韦恩·E·普费弗
我正在使用 LLBL Gen Pro v2.6 并试图创建一种审计对数据库所做更改的方法。现在,我知道 LLBL Gen 使用 AuditorBase 和依赖注入内置了审计功能。我的问题是;我不仅需要跟踪 LLBL Gen 公开为可审计的内容,还需要跟踪进行更改的用户。据我所见,没有一种内置的方式来收集这些信息。有没有人使用过 LLBL Gen 的内置审计并确定了一种方法来做到这一点?
韦恩·E·普费弗
我使用了 LLBLGens 审计类。确定用户确实是您必须处理的事情。LLBLGen 的变量太多,实际上无法为您执行此操作。您的用户是如何处理的?这是一个 winforms 或 asp.net 应用程序吗?
最好的解决方案是将 UserId 存储在会话变量或静态变量中,具体取决于哪个更适合您的应用程序。在审计类的实现中,您可以从其存储位置中提取 UserId。
另一种可能的解决方案是覆盖实体类或数据适配器类并将 UserId 传递给您的保存方法。然而,这将是更多的工作。
In my WinForms app, I accomplish this by creating a custom IPrincipal and stick that on System.Threading.Thread.CurrentPrincipal when a user logs into the application. Then, I can easily grab that from inside my LLBLGen auditing classes.
我们还将对数据库的更改实施审计,并且将 user_id 添加到审计日志中也有同样的问题。我可以看到您可以执行拉取方法,例如从 Web 会话中获取 user_id(我们正在构建 Web 应用程序),但这会完全打乱应用程序的分层,正如我所看到的那样!?
即,如果 DAL 从表示层(网络会话)中提取数据信息,我将无法在其他上下文中使用 DAL?
此致,
——托马斯