2010-08-12 2 views
2

LLBLGen에서 "계단식 삭제"로 가장 잘 묘사 된 것을 수행하는 쉬운 방법이 있습니까? 당신은이 테이블을 가지고LLBLGen 계단식 삭제?

: 내가 무엇을 찾고 있어요의 예

Customer: 
-Id 

Order: 
-Id 
-CustomerId 

OrderDetail: 
-Id 
-OrderId 

는 지금, 나는 특정 고객과 (모든 주문에 따라 모든 것을 삭제하려면 및 모든 주문 'orderdetails). 내가 외래 키로의 ID가 주문을 삭제하기 전에 고객을 삭제하면 데이터베이스가 적합을 던질 것입니다 때문에, 나는 꽤 많이 필요 :

  1. 고객의 주문을 받기 고객
  2. 받기
  3. 각 주문 'OrderDetails의이
  4. 각 주문
  5. 각 고객
,536에게 삭제 삭제 각 OrderDetail
  • 삭제 받기

    이제는 꽤 일반적인 작업처럼 보입니다. 삭제 (Entity entityToDelete, bool isRecursive) 함수가 어딘가에 있다고 생각합니다. 어쨌든, 이것을 할 수있는 쉬운 방법이 있습니까?

  • 답변

    4

    아니요, LLBLGen Pro는 계단식 삭제를 지원하지 않습니다. 우리는 다음과 같은 이유로 이것을 빌드하지 않았습니다 : - 계단식 삭제를 항상 수행 할 수있는 것은 아닙니다 (두 개 이상의 경로가 a에서 b로 이어지는 다이아몬드 모양의 모델을 상상해보십시오). 이는 sqlserver가 항상 수행하지는 않는 이유이기도합니다/캐스케이드 삭제 허용 - 엔티티 당 타겟 상속에서 캐스케이드 삭제가 불가능합니다.

    db에서 직접 대량 삭제를 지원하므로 삭제할 엔티티를 모두 가져올 필요가 없습니다. 고객의 주문에 대한 모든 주문 세부 정보를 삭제하려면 orderid에 대해 직접 삭제를 만듭니다. 여기에서 customerid를 기준으로 주문에 따라 필터를 지정하는 fieldcompareset 조건자를 필터로 지정한 다음 동일한 조건자를 사용하여 주문을 삭제합니다 조인없이) 고객을 삭제하십시오. 이러한 삭제를 작업 단위로 그룹화 할 수 있습니다 트랜잭션을 쉽게 수행 할 수 있습니다. 당신에게

    +0

    고맙다 - 괜찮은 설명, 가능한 솔루션을 도와 http://www.llblgen.com/tinyforum 잘갑니다 행복 :이와 박히 경우

    , 우리의 포럼에 질문을 게시하시기 바랍니다. – Fishtoaster

    +0

    실제로 LLBLGen에서 일하는 것을 감안할 때 이것을 수행하는 방법을 보여줄 수있는 코드를 제공 할 수 있다면 좋을 것입니다. – Mark

    +0

    사이드 노트에서 "연쇄 삭제를 항상 수행 할 수있는 것은 아닙니다."기능을 구현하지 않은 것에 대한 논쟁은별로 없다는 점을 지적하고자합니다. 상용 ORM 솔루션을 개발할 때 현명한 방법은 기능을 구현하고 작업을 완료 할 수 없을 때 런타임 예외를 throw하여 고객의 삶을 편하게 만드는 것입니다. – Mark