【发布时间】:2015-10-06 08:50:58
【问题描述】:
我有一个设置,我使用服务登录用户并为我的实体自动填充 CreatedBy、UpdatedBy、... 字段。因此,我的 SaveChanges 方法如下所示:
public override int SaveChanges()
{
var modifiedEntries = ChangeTracker.Entries()
.Where(x => x.Entity is IAuditableEntity
&& (x.State == EntityState.Added || x.State == EntityState.Modified));
var activeUserId = ActiveUserService.UserId;
var username = Users.First(x => x.Id == activeUserId).UserName;
foreach (var entry in modifiedEntries)
{
IAuditableEntity entity = entry.Entity as IAuditableEntity;
if (String.IsNullOrEmpty(username))
{
throw new AuthenticationException(
"Trying to save entities of type IAuditable while not logged in. Use the IActiveUserService to set a logged in user");
}
if (entity != null)
{
DateTime now = DateTime.Now;
if (entry.State == EntityState.Added)
{
entity.CreatedBy = username;
entity.CreatedAt = now;
}
else
{
base.Entry(entity).Property(x => x.CreatedBy).IsModified = false;
base.Entry(entity).Property(x => x.CreatedAt).IsModified = false;
}
entity.UpdatedBy = username;
entity.UpdatedAt = now;
}
}
return base.SaveChanges();
}
问题是当我为我的数据库播种时,Autofac 没有运行,也没有注入我的服务。是否有可能在某处设置某种标志,当我为数据库播种时,我使用默认用户名或其他东西?
【问题讨论】:
标签: c# asp.net entity-framework autofac