2013-08-15 1 views
2

저는 최근에 http://forums.lhotka.net/에 올렸지 만 응답이 없습니다. 바라기를 나는 여기에서 더 나은 운이있다. 여기 내 문제가있다.CSLA .NET - Child_Fetch가 예상대로 작동하지 않습니다.

저는 CSLA .NET 4.5를 사용하고 있으며, 최근에 추가로 Child_Update 메소드를 BusinessBase에 추가하여 부모 BusinessListBase를 대량 저장하도록 지원했습니다. 그러나 이것은 우리 시스템에 버그를 도입 한 것으로 보입니다. 두 개의 Child_Update 메소드가 있고 그 중 하나에 매개 변수가없는 경우 매개 변수없는 메소드가 호출되지 않는 것 같습니다. Child Object 이외의 추가 매개 변수없이 DataPortal.UpdateChild를 지정하는 경우에도 마찬가지입니다. 의사 코드에서

예 : 지금은 매개 변수없는 방법은 매개 변수가 하나 구별하지 왜하지만 잘 모르겠어요, CSLA 호출 할 수있는 올바른 데이터 액세스 방법을 찾기 위해 반사를 사용하여 알고

public class SomeChild : BusinessBase<SomeChild> 
{ 
    //No longer called 
    private void Child_Update() {} 

    //Newly added 
    private void Child_Update(SomeNewParent parent) {} 
} 

public class SomeLegacyParent : BusinessBase<SomeLegacyParent> 
{ 
    private static readonly PropertyInfo<SomeChild> SomeChildProperty = 
     RegisterProperty<SomeChild>(x => x.SomeChild, RelationshipTypes.Child); 

    public SomeChild SomeChild 
    { 
     get { return GetProperty(SomeChildProperty); } 
     set { SetProperty(SomeChildProperty, value); } 
    } 

    //Use to call Child_Update(), but now 
    //calls Child_Update(SomeNewParent parent) 
    DataPortal.UpdateChild(ReadProperty(SomeChildProperty)); 
} 

public class SomeNewParent : BusinessBase<SomeNewParent> 
{ 
    private static readonly PropertyInfo<SomeChild> SomeChildProperty = 
     RegisterProperty<SomeChild>(x => x.SomeChild, RelationshipTypes.Child); 

    public SomeChild SomeChild 
    { 
     get { return GetProperty(SomeChildProperty); } 
     set { SetProperty(SomeChildProperty, value); } 
    } 

    //Calls Child_Update(SomeNewParent parent) --- as expected 
    DataPortal.UpdateChild(ReadProperty(SomeChildProperty), this); 
} 

DataPortal.UpdateChild에 전달 된 인수를 기반으로합니까? 이것이 CSLA 버그 일 수 있습니까? 아니면 뭔가 빠졌습니까?

답변

2

흠, 이것이 Csla의 버그 일 수 있습니다. Child_Update()를 Child_Update (SomeLegacyParent)로 변경하여 매개 변수없는 Child_Update가 없어지도록하십시오. 'this'를 전달하기 위해 기존 부모 호출을 UpdateChild로 변경해야 할 수도 있습니다.

편집 :이 답변의 의견에 연결된 스레드마다이 문제는 Csla에서 수정되었습니다.

+0

CSLA에서 상속은 개체 그래프의 부모 - 자식 관계를 작성하는 데 사용되지 않습니다. 속성을 통해 수행됩니다. 자식 속성을 반영하기 위해 부모 클래스를 편집했습니다. –

+0

@BrettJaner 나는 그것을 깨닫는다. 그러나 Child_Update가 ParentBusinessBase의 기본 클래스를 기대한다고 지적하려고하지만 부모 중 누구도 부모로부터 상속받지 않으므로 Csla는 하위 업데이트 b/c의 서명과 일치하지 않습니다. 부모 클래스. – Andy

+0

아, 죄송합니다. 게시물을 잘못 읽었지만 올바른 답변입니다. 내 부분에 복사하여 붙여 넣기 오류. ParentBusinessBase는 SomeNewParent 여야합니다. 나는 그것을 반영하기 위해 질문을 편집했다. –

관련 문제