2011-03-21 9 views
0

nhibernate 및 저장소 패턴에 대해 매우 기본적인 질문이 있습니다.nhibernate 저장소 패턴

나는 저장소 (집계)가 있으며이 저장소는 부모입니다. 하위를 삭제하려는 경우 하위 및 상위 모두의 삭제를 처리하는 하나의 삭제 메소드가 있어야합니까, 아니면 다른 메소드가 있어야합니까?

자녀가있는 학부모 삭제는 어떻게해야합니까? 샘플 코드를 제공해 주시면 감사하겠습니다.

답변

1

매핑을 설정하려면 hbm 매핑 파일 또는 Fluent NHibernate를 사용하고 있습니까? 당신은 매핑 파일을 사용하는 경우

은 하나의 옵션은 객체를 연관된에 캐스케이드되는 cascade 속성, 예컨대 :

... 
<bag name="Children" lazy="true" cascade="delete" > 
    <key column="ParentId" /> 
    <one-to-many class="Child" /> 
</bag> 
... 

캐스케이드 = "삭제"부모의 삭제가 발생합니다을 설정하는 것입니다. Cascade는 cascade = "all | none | save-update | delete"로 지정할 수 있으므로 부모에서 연결된 객체로 케스케이드되어야하는 작업을 지정할 수 있습니다.

+0

감사합니다, 내가 매핑을위한 FluentNhibernate을 사용하고 있습니다. – user669803

+0

@ user669803 Fluent 인터페이스에 익숙하지 않지만 다른 유창한 매핑과 마찬가지로 호출을 연결하여 참조 관계를 사용자 정의 할 수 있습니다. 예를 들어 사용할 계단식 전략을 지정하려는 경우 참조 (x => x.Author) .Column ("AuthorId") .Cascade.All(); " – Graham

0

.Cascade.All() : 당신이 응답을

HasMany(item => item.ItemFeedbackItems) 
      .KeyColumn("ItemID") 
      .Cascade.All() 
      .LazyLoad() 
      .Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore); 
관련 문제