2

とにかくEFにオブジェクトの値を更新する前に持っている必要がありますか?

たとえば、エンティティオブジェクトの場合、ユーザーが保存されているとしましょう。ユーザーオブジェクトの値を更新する前に、ログ記録の目的で知りたいです。

ありがとう、

4

1 に答える 1

4

ObjectContext(edmx) を使用している場合は、イベントにサブスクライブできますSavingChanges

context.SavingChanges += context_SavingChanges;

SaveChanges()これにより、実行時に元の値と現在の値にアクセスできます。

private void context_SavingChanges (object sender, EventArgs e)
{
    ObjectContext context = sender as ObjectContext;
    if (context != null)
    {
        foreach (ObjectStateEntry entry in context.ObjectStateManager
                                 .GetObjectStateEntries(EntityState.Modified))
        {
            // TODO: do some logging with these values.
            entry.OriginalValues;
            entry.CurrentValues;
        }
    }
}

DbContext を使用している場合は、次の方法でイベントにアクセスできます

((IObjectContextAdapter)this).ObjectContext.SavingChanges
于 2012-06-28T18:09:28.580 に答える