2009-11-05 4 views
6

나는 NHibernate를 사용하는 새로운 어플리케이션으로 데이터베이스 퍼포먼스 문제를 연구하는 것에 던져졌다. NH가 어떤 행을 삽입 할 때 어떤 행이 동일한 데이터를 가지고 동일한 행을 갱신하는지 알 수있었습니다. 지금까지 수집 한 내용은 many-to-one 관계가 정의 된 테이블에서 insert가 수행 된 후 업데이트된다는 것입니다.NHibernate에서 삽입 후 Update를 억제 할 수 있습니까?

어쨌든 NH 수치가 데이터가 동일하고 추가 업데이트를 억제한다고 예상했을 것입니다. 이 추가 업데이트를 전혀 표시하지 않을 수있는 방법이 있습니까?

+0

코드? 삽입 후 모든 열의 업데이트가 정상적인 것은 아닙니다. – dotjoe

답변

6

다 대일 연관에서 양방향 관계가있는 것 같습니다.

이 문제를 해결하려면 inverse="true"을 관계의 일대 다면에 추가해야합니다. Here is an example.

삽입은 자식이 데이터를 저장함으로써 수행됩니다. 업데이트는 부모가 데이터베이스에서 자식 레코드의 parentId를 설정하여 수행됩니다. 관계가 단방향 인 경우 첫 번째 삽입에 parentId가 없으므로 업데이트가 필요합니다. 양방향 관계로, 당신이 설명하는대로 업데이트가 불필요합니다. inverse="true"은 관계 유지에 대한 책임이 자녀에게 있음을 알려줌으로써 추가 업데이트를 방지합니다.

+3

-1 이는 양방향 관계가 아닌 경우 발생하기 때문입니다. – BradLaney

관련 문제