2014-04-14 4 views
1

저는 CSLA를 처음 사용하면서도 계속 저의 머리를 되 찾으려고합니다. 부모를 통해 자식 개체를 삭제하는 방법을 알아야합니까? 예 : 일부 ProjectResources (하위)가있는 프로젝트 클래스 (상위)가 있고 프로젝트를 삭제해야하는 경우 CSLA를 통해 어떻게 할 수 있습니까? 예 :CSLA 자식 개체 제거

   Project myProject = Project.GetByProjectID(projectID); 
       ProjectResourceList resources = myProject.ProjectResources; 
       myProject.Delete(); 
       if (myProject.IsDeleted) 
       { 
        while (resources.Any()) 
        { 
         myProject.ProjectResources.Remove(resources[0].ProjectResourceID); 

        } 
       } 
       myProject.Save(); 

Remove()는 데이터베이스에서 제거하지 않습니다. SQL 서버가 참조 무결성에 대해 불만을 제기 할 것이기 때문에 분명히 부모 개체를 삭제할 수 없습니다. 저장 프로 시저가 계단식 삭제를 처리하는 것을 원하지 않습니다. 모든 제안은 매우 감사하겠습니다.

감사합니다.

답변

1

CSLA 컬렉션은 메모리 내 도메인 개체입니다. 컬렉션에서 항목을 제거하면 항목이 활성 컬렉션에서 제거되고 삭제 된 목록에 추가됩니다 (컬렉션 내부에서 보호됨).

데이터 포털에서 개체 그래프 업데이트를 요청하면 데이터 액세스 코드는 삭제 된 목록의 항목을 제거하고 활성 모음의 항목을 삽입/업데이트해야합니다.

CSLA의 버전은 2007 년 이래로 컬렉션에 포함 된 하위 개체에서 적절한 Child_Insert, Child_Update 및 Child_Delete 메서드를 호출하여 자동으로 수행합니다.

'CSLA 4 사용'설명서에서 데이터 포털 작업에 대한 자세한 정보를 찾을 수 있습니다.