2009-06-03 2 views
0

많은 테이블 감사 방법을 알고 있습니다. 일부는 트리거 기반이며 감사 할 각 테이블에서 트리거를 요구합니다. SOme에는 열 데이터 유형에 따라 제한이 있습니다. NLog 또는 Log4Net과 같은 로깅 프레임 워크를 어떻게 사용할 수 있습니까? 테이블에있는 내 로그에서 "이 테이블의이 열을 현재 val0에서 val1로 업데이트 한 사람이 누구입니까?"라는 질문에 응답해야합니다.NLog/Log4Net을 사용하여 데이터베이스 변경 추적을 자동화하는 방법은 무엇입니까?

나는 OR 매퍼를 아직 결정하지 않았습니다. NHibernate 또는 EF쪽으로 기울기.

미리 감사드립니다.

답변

2

DAO과 같은 패턴을 사용하면 (최대 절전 모드로 Java에서 성공적으로 사용함) 데이터베이스의 모든 변경 사항에 대한 항목을 추가 할 수 있습니다. Spring.NET을 사용하는 경우 AOP을 사용하여 데이터베이스에 액세스하는 DAO의 메서드에 인터셉터를 추가 할 수 있습니다.

어쨌든 매우 자세한 것이므로 DAO 패키지에 대한 특수 appender를 추가 할 수 있습니다.

+0

포스트 샤프쪽으로 기울어졌습니다 ..하지만 AOP는 좋은 옵션으로 들립니다. – Perpetualcoder

1

빅터스 대답은 최고 수준이지만 필자는 열 -> 객체 매핑이 어떻게 작동하는지에 따라 어려울 수 있다고 덧붙이고 싶습니다.

당신의 테이블 컬럼을 오브젝트 속성과 다른 이름을 가진 필드에 매핑한다면 SQL 정보를 구문 분석하여 어떤 컬럼이 업데이트되었는지 판단 할 수있을 것입니다. 예를 들어 "Product.Price"의 값을 변경하고 실제로 "final_price"라는 열에 매핑하면 로깅이 데이터베이스에서 발생하는 사항과 정확히 일치하지 않습니다.

또한 이것은 잘못된 것일 수 있습니다. 그러나 ORM 패키지를 통해 연결이 끊어진 엔터티로 작업하는 경우 변경 내용 추적 정보를 사용할 수 있는지 확실하지 않습니다. 내가 열거 한 ORM 중 하나가 모든 열을 업데이트하는 문제에 대해 막연하게 기억하고 있으므로 사용자가 실제로 열 하나를 업데이트 할 때 테이블의 모든 열을 변경 한 것으로 보입니다.

관련 문제