2009-11-06 4 views
0

엔티티에 매핑되는 테이블이있는 흥미로운 시나리오가 있습니다. 그러나 야간 프로세스의 일부로 채워지고 첫 번째 테이블과 완전히 동일한 열이있는 다른 버전의 테이블이 있습니다. 너무 많은 세부 사항에 빠지지 않고 두 번째 테이블은 레코드의 작은 하위 세트가있는 "작동하는"테이블입니다. 삽입은 큰 테이블에서만 수행 할 수 있고 읽기/업데이트는 작은 테이블에서만 수행 할 수있는 이상한 비즈니스 규칙이 있습니다.NHibernate 매핑 질문 - 기괴한 시나리오

어떻게 매핑 할 수 있습니까? 즉, 동일한 경우 CRUD 작업에서 하나의 매핑을 사용하고 다른 시나리오에서는 다른 테이블을 사용하려고합니다.

답변

1

각 세션마다 동일한 엔티티를 각 테이블에 매핑하거나 단일 세션 팩토리에서 두 개의 다른 엔티티를 사용하여 자체 엔티티 (클래스)를 자체 테이블에 매핑하여이 작업을 수행 할 수 있습니다.

1

나는이를 두 개의 별도 엔티티로 처리하고 별도로 동일한 테이블에 매핑합니다. 리포지토리를 사용하고 있다면 엔티티에 삽입이 가능하고 다른 엔티티가 선택/업데이트된다는 규칙을 적용 할 수 있습니다.

0

두 엔티티를 만들고 각 엔트리를 고유 한 별도의 테이블에 매핑하십시오. 테이블이 서로 거울이므로 응용 프로그램 전체에서 하나의 엔티티 만 사용하십시오. 엔티티를 저장할 시간이되면 IsNew 플래그를 확인하십시오. IsNew가 true이면 저장 (삽입)하면됩니다. IsNew가 false이면 값을 2 차 엔터티에 복사하고 저장합니다 (업데이트). 이 방법을 사용하면 응용 프로그램에서 서로 다른 두 엔티티를 전달하는 것에 대해 걱정할 필요가 없습니다. 코드를 읽는 동안 혼란스러워해야합니다. 왜냐하면 여러분이 사용하는 엔티티에 대해 걱정할 필요가 없기 때문입니다.

1

로드/쓰기 작업에 다른 sql을 설정할 수도 있습니다.이 경우 프로세스간에 완벽하게 제어 할 수 있습니다.