2010-03-11 2 views
1

에서 삭제 : LastOrders가NHibernate에 캐스케이드 내가이 수업을 다른 기업 수집

public class User 
{ 
    public IList<Order> LastOrders { get; set;} 
} 

public class Order {} 

대다지도. 내가 주문을 삭제할 때

어떻게 모든 사용자에 대해 LastOrders 컬렉션에서 주문을 제거하기 위해 (유창함) NHibernate에 말할까요? 가능한가?

즉 삭제하기 전에 (사용자, 업데이트 수집에 대한 조회를 저장) 현재 내가 수동으로 할

user.LastOrders.Add(order); 
Session.Delete(order); 
Assert(!user.LastOrders.Contains(order)); 

(DB 부하 코드 생략/저장). 이것이 없으면, NHibernate는 사용자의 LastOrders에 의해 참조되기 때문에 Order를 삭제할 수 없다. 콜렉션 매핑이 누락 된 행을 무시하도록 설정되어있는 경우

답변

0

안전하게 주문을 삭제할 수 있습니다.

이 NHibernate에 의해 무시됩니다 콜렉션 테이블에서 고아 행을 떠날 것이다. 일부 일괄 처리에서 정리할 수 있습니다.

이렇게하면 현재 접근 방식을 빠르게 삭제할 수 있습니다. 단점은 컬렉션 테이블이 모델과 일정 시간 일치하지 않는다는 것입니다.

+0

예는하지만 대다 테이블이 경우 기록을 고아거야? – queen3

+0

OK, 여전히, 당신은 고아 행 NH 무시 될 것이라고 확신? 두 동일한 결과가있을 것입니다 그리고 난 NH이 기대 모르겠어요 -이 같은 ID를 가진 새로운 대다 쌍을 삽입하면 어떻게 다음 다시 읽기 (그것이 가능하다고 가정). 어쨌든, 이것은 나에게 깨끗한 해결책처럼 보이지 않습니다. – queen3