ObjectContext.SavingChanges中的当前用户标识

时间:2013-02-19 07:54:02

标签: asp.net-mvc-3 entity-framework httpcontext

我正在使用ObjectContext.SavingChanges事件根据像这样的对象状态更新CreatedDate / UpdatedDate列

partial void OnContextCreated()
{
   //Extension of the Command Timeout to avoid processing problems.
   CommandTimeout = 600; //Time in seconds

   this.SavingChanges += new EventHandler(Entities_SavingChanges);
}

protected void Entities_SavingChanges(object sender, EventArgs e)
{
   var addedObjects = this.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Added);
   foreach (var addedObject in addedObjects)
   {
      var propertyInfo = addedObject.Entity.GetType().GetProperty("CreatedDate");
      if (propertyInfo != null)
      {
         propertyInfo.SetValue(addedObject.Entity, DateTime.UtcNow, null);
      }
    }

    var modifiedObjects = this.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);
    foreach (var modifiedObject in modifiedObjects)
    {
       var propertyInfo = modifiedObject.Entity.GetType().GetProperty("UpdatedDate");
       if (propertyInfo != null)
       {
          propertyInfo.SetValue(modifiedObject.Entity, DateTime.UtcNow, null);
       }
    }
}

我还有两列CreatedUser和UpdatedUser。

有没有办法在上下文中使用当前用户名更新那些?

Ofcource,System.HttpContext.Current在这里为空,因为这是我单独的类库项目,我通过WCF服务访问。

1 个答案:

答案 0 :(得分:0)

如果此代码驻留在您从ASP.NET MVC应用程序中使用的WCF服务中,则可以将当前用户名作为参数发送到您要调用的方法。