2016-08-18 79 views
1
public override int SaveChanges() 
{ 
    var modifiedEntries = ChangeTracker.Entries().Where(x => x.Entity is IAuditableEntity && x.State == EntityState.Added || x.State == EntityState.Modified); 
    ApplicationUser userLogIn = new ApplicationUser(); 

    foreach (var entry in modifiedEntries) 
    { 
     if(entry != null) 
     { 
      var entity = entry.Entity as IAuditableEntity; 

      //in MVC5 i use HttpContext.Current.User.Identity.Name//In MVC6 I don't know to do 

      var user = "User"; 
      var now = DateTime.Now; 
      if (entry.State == EntityState.Added) 
      { 
       entity.CreatedBy = user; 
       entity.CreatedOn = now; 
       entity.IsDeleted = false; 
      } 
      else 
      { 
       base.Entry(entity).Property(x => x.CreatedBy).IsModified = false; 
       base.Entry(entity).Property(x => x.CreatedOn).IsModified = false; 
       base.Entry(entity).Property(x => x.IsDeleted).IsModified = false; 
      } 
      entity.UpdatedBy = user; 
      entity.UpdatedOn = now; 
     } 
    } 

    return base.SaveChanges(); 
} 

回答

0

只是注入的IHttpContextAccessor到類(作爲構造函數依賴),那麼你可以從上下文裏面User對象獲取名稱:

private IHttpContextAccessor context; 
public SomeRepo(IHttpContextAccessor context) 
{ 
    this.context = context; 
} 

//in your method 
var userName = this.context.HttpContext.User.Identity.Name; 

由於您使用的是身份的框架,如果你除了名字之外需要當前用戶提供額外的數據,你可以使用GetUserAsync(HttpContext.User)

+0

這樣的方法來注入UserManager<ApplicationUser>並檢索整個ApplicationUser對象。非常感謝,正是我需要的! – user3461429

相關問題