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 サービスを介してアクセスする別のクラス ライブラリ プロジェクトであるためです。