我有一個設置,我使用服務登錄用戶併爲我的實體自動填充CreatedBy,UpdatedBy,...字段。正因爲如此我SaveChanges方法是這樣的:在播種時更改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不運行,不注入我的服務。是否有可能在某處設置了某種標誌,當我播種我的數據庫時,我使用默認的用戶名或其他?
將參數添加到savechanges是一個好主意!我想我會用這個。 – Thijs