首页 > 解决方案 > 使用 AuditIdentityDbContext 在 asp.net mvc 中的 Audit.net 框架性能

问题描述

我正在使用 audit.net 和 audit.entityframework 来审计使用实体框架代码优先原则在 asp.net MVC 5 应用程序中所做的日志记录更改。

在用户网络表单上,可以将多个角色分配给一个用户。

在控制器的操作中使用以下短循环:

foreach (var role in roles)
                {
                    base.UserManager.AddToRole(user.Id, role.Name);
                }

我在 sqlprofiler 中获得了大约 700 行的日志。

但是,如果我在 Startup.cs 中启用 audit.net 记录器:

 Audit.EntityFramework.Configuration.Setup()
                .ForAnyContext(x => x.IncludeEntityObjects(true)
                .ForEntity<User>(config => config
                .Ignore(u => u.PasswordHash))
                .AuditEventType("{context}:{database}"))
                .UseOptIn().IncludeAny(t.Name.ToLower().IndexOf("user") >= 0);

结果是为同一操作创建了 10.000 多个 sql profiler 记录,将 51 个角色分配给单个用户。此外,根据 ms-sql len 函数,audit.net 的 51 条事件记录都有一个包含大约 200 万个字符的数据字段。

任何人都可以解释由于启用登录用户角色表而导致的大量 sql 活动的原因以及如何避免它。

标签: audit.net

解决方案


推荐阅读