audit.net - 使用 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 活动的原因以及如何避免它。
解决方案
推荐阅读
- python - 带有 2 个 y 轴的分组箱线图 每个 x 刻度 2 个变量
- c++ - 为什么变量的地址与指针返回的地址不同?
- laravel - Laravel 从数据透视表中获取多对多关系数据
- c++ - 如何在 std::multiset 中指定类的比较器
- php - 致命错误:未捕获的 PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误
- kotlin - Kotlin 允许与具有不同返回类型的属性 getter 相同的函数签名
- javascript - 通过 POST 方法使用 PHP 和 AJAX 的 Multipart/form-data 问题
- swift - 如何让 Grid 根据 SwiftUI 中的网络数据改变列数?
- node.js - Nest.js - 在猫鼬模式中创建索引
- enterprise-architect - 覆盖“粘贴为”对话框