0

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 の 2 つの列があります。

コンテキストから現在のユーザー名を使用してそれらを更新する方法はありますか?

もちろん、System.HttpContext.Currentここでは null です。これは、WCF サービスを介してアクセスする別のクラス ライブラリ プロジェクトであるためです。

4

1 に答える 1

0

このコードが、ASP.NET MVC アプリケーションから使用する WCF サービスに存在する場合、呼び出すメソッドに現在のユーザー名をパラメーターとして送信できます。

于 2013-02-19T07:58:24.507 に答える