배경 :LINQ 감사 및 현재 사용자
내가 삽입에 대한 데이터베이스 감사를 할 필요가있는 웹 응용 프로그램이// 삭제 업데이트 (어쩌면 읽기). 내 ORM으로 LINQ를 사용합니다. 웹에서 발견 한 몇 가지 아이디어를 사용하여 감사 테이블과 관련된 엔티티를 꾸미기 위해 속성을 사용하는 방법을 생각해 냈습니다. 감사 테이블 자체는 현재 테이블의 ID 및 이름, 수정 유형, 수정 시간 및 작업의 성공 여부 필드 이외에 원래 테이블과 동일한 유형의 동일한 열을 포함해야합니다. 감사는 SubmitChanges 중 발생합니다 - 내 데이터 컨텍스트는 추상이며 구체적인 구현에서 SubmitChanges를 상속하고 무시합니다. 추상적 인 데이터 컨텍스트는 실제로 DataContext를 확장하고 현재 사용자 ID와 이름에 대한 자리 표시자가있는 CurrentUser 속성을 추가하는 AbstractAuditableDataContext에서 파생됩니다. 기본적으로 이들은 0이고 로그인 된 사용자가없는 인스턴스의 경우 "시스템"입니다. 예를 들어 사용자 테이블의 특정 필드가 업데이트 될 때 등록 또는 로그인 중일 수 있습니다. 이 응용 프로그램은 ASP.NET MVC를 사용하여 C#으로 작성되었습니다.
문제 :
내 파생 데이터 컨텍스트의 현재 사용자 속성을 채울 수있는 가장 좋은 방법은 무엇입니까? CurrentUser가 설정되어 있는지 확인하기 위해 AuditUtility에 주입 된 유틸리티 클래스를 생성해야합니까? 그렇지 않으면 채우지 않아야합니다. 테스트하려면 모의하고 싶지만 살아있는 응용 프로그램에서는 게으르게 사용할 것입니다. 세션에서로드 및 가져 오기/설정 아니면이 기능을 수행하기 위해 모든 컨트롤러가 사용하는 데이터 컨텍스트 팩토리를 수정해야합니까? 이미 단위 테스트를하는 동안 모의 팩토리를 사용하므로 새로운 클래스를 생성하지 않아도됩니다. 또는 파생이 공장 외부에서 수행되어야하고 현재 사용자가 컨텍스트 생성 중에 주입되어야합니다. 이렇게하면 "대신하여"감사를 수행 할 수 있습니다.
나는 이것이 다소 주관적인 것을 알고 있지만, 당신이 기여할만한 생각/경험에 감사드립니다.
감사합니다.
데이터 컨텍스트 범위는 작업마다 있으며, 수명이 매우 짧습니다. – tvanfosson