저는 최근에 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 버그 일 수 있습니까? 아니면 뭔가 빠졌습니까?
CSLA에서 상속은 개체 그래프의 부모 - 자식 관계를 작성하는 데 사용되지 않습니다. 속성을 통해 수행됩니다. 자식 속성을 반영하기 위해 부모 클래스를 편집했습니다. –
@BrettJaner 나는 그것을 깨닫는다. 그러나 Child_Update가 ParentBusinessBase의 기본 클래스를 기대한다고 지적하려고하지만 부모 중 누구도 부모로부터 상속받지 않으므로 Csla는 하위 업데이트 b/c의 서명과 일치하지 않습니다. 부모 클래스. – Andy
아, 죄송합니다. 게시물을 잘못 읽었지만 올바른 답변입니다. 내 부분에 복사하여 붙여 넣기 오류. ParentBusinessBase는 SomeNewParent 여야합니다. 나는 그것을 반영하기 위해 질문을 편집했다. –