2012-12-03 2 views
0

DbContext 개체의 SaveChanges() 메서드를 재정의하여 감사 속성 값을 업데이트 할 수 있다는 것을 알고 있습니다. 하지만 감사 열을 실제로 엔티티에 매핑하지 않고 감사 열을 업데이트하고 싶다면 어떻게됩니까?DbContext에서 테이블 감사

"열 - 업데이트"목록에 추가 매핑되지 않은 열 값을 포함하도록 Entity Framework에 지시 할 수있는 방법이 있습니까?

감사합니다.

+0

가 왜 열을 매핑하지 않으을? –

+0

내 도메인 모델은 감사에 의존하지 않아야합니다. 이 데이터는 DBA에만 해당됩니다. –

답변

0

흠 ... 감사 대상자 ... 필드가 처음부터 있는지 여부를 알 수 없습니까? 아니면 필드가 설정되어 있는지 상관하지 않습니까?

나중에 열을 추가 할 수 있지만 필요하지 않게 만들 수 있습니까? 개인적으로 CreatedDate, CreatedBy, ModifiedDate, ModifiedBy를 상속을 통해 대부분의 엔터티에 추가합니다. I.E. 다음과 같은 AuditableEnity 클래스를 사용할 수 있습니다.

그러면 모든 모델에 상용구 속성이 포함될 필요가 없습니다. 그런 다음 조금 추가하십시오. 그런 다음

당신의 SaveChanges를() 같은 것을 볼 수 있습니다

public override int SaveChanges() 
    { 
     //Only get changes from the auditable entities 
     var changeSet = ChangeTracker.Entries<AuditableEnity>(); 

     ... 

     if (changeSet != null) 
     { 
      foreach (var entry in changeSet.Where(c => c.State != EntityState.Unchanged)) 
      { 
       if (entry.State == EntityState.Added) 
       { 
        if (entry.Entity.OverrideAuditing == false) 
        { 
         entry.Entity.CreatedById = userId; 
         entry.Entity.CreatedDate = DateTime.UtcNow; 
        } 
       } 

       entry.Entity.ModifiedById = userId; 
       entry.Entity.ModifiedDate = DateTime.UtcNow; 
      } 
     }    

     return base.SaveChanges(); 
    }  
관련 문제