我正在使用audit.net和audit.entityframework进行使用entityframework code first principle在asp.net MVC 5应用程序中进行的审计日志记录更改。
在用户webform上,可以为用户分配多个角色。
在控制器的操作中使用以下短循环:
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个角色。此外,audit.net的51个事件记录每个都有一个数据字段,根据ms-sql len函数有200万个字符。
任何人都可以解释由于启用了用户名表的登录以及如何避免它而导致的大规模sql活动的原因。