2008-09-23 2 views
2

나는 NHibernate가 Pgsql 데이터베이스에 액세스하면서 ASP.Net을 사용합니다.NHibernate의 자동 업데이트 가방

우리의 객체 중 일부는 NHibernate 가방을 사용하며 응용 프로그램의 List 객체에 매핑됩니다. 때로 우리는 데이터베이스의리스트와 관련된 것을 업데이트 할 때 NHibernate를 통해 객체를 새로 고침해야하는 문제가 있습니다.

<bag name="Objects" inverse="true" lazy="true" generic="true" > 
    <key column="object_id" /> 
    <one-to-many class="Object" /> 
</bag> 

위 코드는 내가 가방에 사용하는 코드 샘플입니다.

다른 사람이이 문제를 어디서 발견했는지, 그리고 그 문제를 해결하기 위해 무엇을해야하는지 궁금합니다.

+0

당신은 어떤 문제를 말할 수 있을까? 세션과 관련이 있습니까? – chrissie1

+0

문제는 주로 응용 프로그램에서 데이터베이스에 더 많은 항목을 저장하면 이러한 항목의 가방이있는 개체가 액세스 할 수 있기를 원하면 개체를 새로 고쳐야한다는 것입니다. – Jimmeh

답변

4

save-update와 같은 NHibernate 캐스케이드를 사용해 보셨습니까?

NHibernate가 엔티티의 연관을 자동으로 통과하고 계단식 옵션에 따라 작동하도록 알릴 수 있습니다. 예를 들어 save-update cascade를 가진 콜렉션에 저장되지 않은 엔티티를 추가하면 우리 측에서 명시 적으로 지시 할 필요없이 상위 오브젝트와 함께 저장됩니다. 여기

각 캐스케이드 옵션의 의미입니다 :

  • 없음 - 사용자가 처리 할 수 ​​있도록, 어떤 폭포를하지 않는 그들
  • 저장 업데이트 - 객체가 저장/업데이트, 연관 검사 및이를 필요로하는 객체 저장/업데이트 (다 대 다 시나리오에서 연관을 저장/업데이트하는 것을 포함).
  • 삭제 - 개체가 삭제되면 연결의 모든 개체가 삭제됩니다.
  • 삭제 - 고아 삭제 - 개체가 삭제되면 연결의 모든 개체가 삭제됩니다. 그 외에도 개체가 연결에서 제거되고 다른 개체 (분리됨)와 연결되지 않은 경우 개체도 삭제합니다.
  • 모두 - 개체를 저장/업데이트/삭제할 때 연결을 확인하고 발견 된 모든 개체를 저장/업데이트/삭제하십시오.
  • all-delete-orphans - 개체를 저장/업데이트/삭제할 때 연결을 확인하고 발견 된 모든 개체를 저장/업데이트/삭제하십시오. 그 외에도 개체가 연결에서 제거되고 다른 개체 (분리됨)와 연결되지 않은 경우 개체도 삭제합니다. 여기

더 많은 정보는 : NHibernate Cascades: the different between all, all-delete-orphans and save-update