엔터티 프레임 워크 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;
        }
    }
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.