【问题标题】:Current user identity in ObjectContext.SavingChangesObjectContext.SavingChanges 中的当前用户身份
【发布时间】:2013-02-19 07:54:01
【问题描述】:

我正在使用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 服务访问的单独的类库项目。

【问题讨论】:

  • HttpContext.Current 不会为空,因为代码位于不同的 dll 中。
  • 不,HttpContext.Current 不为空,因为代码位于不同的 DLL 中。 HttpContext.Current 为 null,因为此代码在 WCF 服务中运行。

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


【解决方案1】:

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

【讨论】:

  • 谢谢!我已经更新了我的问题以使其更清楚。我将事件附加到 ObjectContext ,因此每当调用 ObjectContext.SaveChanges 方法时都会调用它。所以这是我为所有对象保存所做的通用事情。
  • 哦,代码并不驻留在 Web 服务中,它是一个单独的库项目。 Web 服务使用此库项目的参考
  • 所以您调用的是 Web 服务?该 Web 服务使用类库项目这一事实是无关紧要的。重要的是,您正在从 MVC 应用程序调用 WCF Web 服务并希望将当前用户到它,对吗?
  • 那是你的问题。 HttpContext.Current 在您的 WCF 项目中将为空。正如我在回答中已经建议您的那样,您可以将用户名作为参数传递给您的方法。
  • 在这种情况下存在各种选项。例如,您可以将当前经过身份验证的用户的用户名作为自定义标头发送:stackoverflow.com/questions/964433/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多