감사 추적에 대한 몇 가지 게시물과 기사를 읽는 데 시간을 할애했지만 여전히이를 파악할 수 없습니다. 내가 필요로 무엇EF 4.2 코드로 가로 채기 및 로깅 변경
나에게 다음과 같은 결과를 줄 것이다 아주 기본적인 감사 시스템 :
고객 "홍길동은"- 다른 사용자 신원 미상 "에서
- 주소는"사용자 "에 의해 수정 된" "
- 고객 "신원 미상는 다른 사용자 "
I"에 의해 제거 " dbContext에 SaveChanges를 이벤트를 무시하려하지만 난이 다음과 같은 문제에 붙어있어 :
public override int SaveChanges()
{
foreach (DbEntityEntry<IAuditable> entry in ChangeTracker.Entries<IAuditable>())
{
if (entry.State == EntityState.Added)
{
// since the object was not added yet, if I write to log in here and
// for some reason SaveChanges fail, I will end up with a fake log entry
}
else if (entry.State == EntityState.Modified)
{
// same in here
}
}
return base.SaveChanges();
// here the state for all entries have changed to Unchanged or Detached.
// detached is probably the one that was deleted however the “Unchanged”
// could be new or modified records.
}
나는 이러한 목표를 달성하기 위해 데이터베이스에 트리거를 사용할 수 있습니다 알고 있지만 나는 그래서 더 제어 할 수 있습니다 여기에 그것을 유지하고 싶습니다 그것 이후, 나는 SQL 녀석이 아니기 때문에 응용 프로그램을 배포 한 후에 db에 대한 많은 제어권을 가지지 않을 것입니다.
나는 여기서 아주 간단한 것을 놓치고있을 것이라고 확신한다. 모든 도움에 감사드립니다.
미리 감사드립니다.
성능은 어떻습니까? DbContext를 ObjectContext로 캐스팅 한 후 데이터를 저장하는 속도가 느리지는 않습니까? – Saber
@Saber : DbContext는 내부적으로 ObjectContext를 사용하므로 성능에 영향을 미치지 않아야합니다. –