Entity Framework 7 SaveChanges

entity-framework-core

質問

EF7のモデルをデータベースに保存する前に呼び出されるコールバックを登録する方法はありますか?私がしたいことは、私がすべてのモデルで持っているModifiedByとModifiedDateプロパティを設定することです。私は各保存の前にこれを手動で行うことに熱心ではないので、より一般的で自動的な方法を探しています。

受け入れられた回答

ChangeTracker.Entries()使用すると、エンティティの変更をすべて取得できます。 DbContextのSaveChangesをオーバーライドし、次のコードのようなものを使用して変更されたプロパティを設定できます。

public override int SaveChanges()
{
    SetModifiedInformation();
    return base.SaveChanges();
}

public override async Task<int> SaveChangesAsync( CancellationToken cancellationToken = new CancellationToken() )
{
    SetModifiedInformation();
    return await base.SaveChangesAsync( cancellationToken );
}

private void SetModifiedInformation()
{
    foreach (var entityEntry in ChangeTracker.Entries())
    {
        var entity = entityEntry.Entity as ChangeTracking;
        if (entity != null)
        {
            entity.ModifiedBy = "Get User Here";
            entity.ModifiedTime = DateTime.Now;
        }
    }
}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ