당신이 관계형 데이터베이스를 사용하고 있다는 가정에 대한 흥미로운 일이 될 수 있습니다 당신은 단순히 코드를 삽입, 업데이트 트리거 수 및 이벤트 삭제 다른 테이블에 동작을 기록 할 수 있습니다.
기록 된 원본 데이터 테이블과 동일한 정의가있는 기록 테이블을 사용하는 것도 좋은 생각입니다. 이렇게하면 원본 테이블을 최대한 가벼운 상태로 유지할 수 있으므로 데이터베이스 내의 테이블에 DQL의 성능이 향상되고 실수로 삭제 된 레코드로 Delete 이벤트를 추적 할 때 모든 레코드를 가져올 필요가 없습니다 사용자에 의해.
또 다른 방법으로, 매일 처리되는 행의 수에 따라 필드가 삭제되었는지 여부에 상관없이 true 또는 false로 플래그를 지정하고 현재 작업을 저장해야하는 열을 추가 할 수 있습니다. Active Directory와 작동하도록 DB를 구성 했으므로 현재 사용자를 정밀도로 식별 할 수 있습니다.
글쓰기 동안, 나는 또 다른 생각을 들었다. 당신은 아마 이미 그것에 대해 생각했습니다! :-) 어쨌든, 보안 문제를 관리하는 DLL을 빌드하십시오. 코드 내에서 보안 DLL로 식별되는 현재 로그인 한 사용자와 매개 변수를 간단히 전달할 수 있습니다.
무엇이든지, log4net 나는 그것을하는 좋은 방법이라고 생각합니다. 모든 사용자의 이벤트를 개인용 에디션의 무료 DB 인 SQLite DB에 기록 할 수 있습니다. Microsoft Enterprise Library 4.1 - 2008 년 10 월, 올바르게 기억하면 매우 유용한 도구를 제공하며 프로그래머는 다시 실행해야하고 다시 다시해야 할 작업을 빠르게 지루하게 만듭니다. MEL은 반복적 인 코드 재 작성의 고통을 피하기 위해 이러한 반복 가능한 루틴을보다 쉽게 만들도록 특별히 설계되었습니다. 이를 통해 고객은 고객에게 중요한 요소, 기능 및 요구 사항에 집중할 수 있습니다. OpenSource이며 IBM, HP 및 기타 대기업과 같은 회사의 요구에 따라 Microsoft가 관리합니다. 어쩌면 우리는 여전히 그 존재를 무시하고 있습니다. 어쨌든, 필자는 엔터 프라이즈 라이브러리가 구성에 의해서만 거의 작동하기 때문에 언제나 아키텍처를 고려하면서 갈 수있는 최선의 방법이라고 생각합니다.
리플렉션에 익숙하다면 반영 및 저장 중에 동시에 기록하는 루틴을 사용하여 오브젝트의 인스턴스를 초기화 할 수 있습니다.
아시다시피 많은 노력 없이도 가능한 많은 방법이 있습니다. 그것은 모두 아키텍처에 따라 다릅니다.
음, 많이 썼습니다. 아무도 지루하지 않기를 바래요! :-)
좋은 하루 되세요!
매우 흥미로운 기사, 여물통을 읽을 것이다;) – griti