2014-01-05 11 views
0

기존 중소 기업 ERP 시스템을 더욱 발전시키기 위해 DevExpress XAF & XPO를 실험하고 있습니다. 기존 테이블을 변경하면 안되는 SQL 데이터베이스가 있습니다. 우리가하려는 일은 객체 상속 (MapInheritanceType.OwnTable)을 통해 이전 테이블에 "연결"되어야하는 새로운 테이블에만 필요한 새로운 테이블 속성을 추가하는 것입니다.XAF/XPO 기존 데이터베이스 통합 방법

예 :

기존 tCustomer 테이블이 있습니다. 이제 우리는 XPO 개체가

public class tCustomerExtended : test.Module.BusinessObjects.db.tCustomer ... 

다음 새로운 특성을 가진 연장하여야한다 tCustomerExtended 클래스처럼 tCustomerExtended 추가하고 tCustomer 클래스 (순서대로 이전 클라이언트 응용 프로그램에서 사용되는) 변경되지 않습니다.

물론 잘 작동합니다. 새 테이블 tCustomerExtended이 기본 키 kCustomer (기존 테이블의 키)로 생성됩니다. 또한 XAF는 예상대로 UI를 생성합니다. tCustomerExtended 항목을 표시하므로 tCustomerExtended보기가 비어 있습니다.

!!! 그러나 우리가 실제로 달성하고자하는 것은이 뷰에 기존의 모든 tCustomer 항목과 tCustomerExtended의 새 속성을 표시하는 것입니다. 그런 다음 OnSaving 메서드는 레거시 속성을 tCustomer에 저장하고 새 속성은 tCustomerExtended에 저장합니다. 또한 이전 tCustomer 테이블 인 kCustomer PK에는 Identity Specification이 없으므로 kCustomer 키를 생성해야합니다.

이 순간에 나는 낡은 tCustomer (절대적으로 허용되지 않는 것)을 변경하지 않고 이것을 달성하는 방법을 알지 못합니다.

답변

0

기본적으로 하위 클래스 tCustomerExtended을 만들 때 XAF는 이 모두 포함 된 세부 정보 뷰를 생성해야합니다. 모든 tCustomer 속성도 마찬가지입니다. 왜 당신이 그 행동을 보지 못하고 있는지 모르겠습니다.

이전의 tCustomer 테이블에 새 열을 추가 할 수는 없습니다. 기존 열을 변경하지 않는 한 기존 시스템은 계속 작동해야합니다. tCustomer 테이블에 여분의 열이 있으면 기존 시스템이 손상됩니까? 최소한의 변경 만 허용되는 경우 [ExpandObjectMembers]으로 [Aggregated] 속성을 만들면됩니다. 그러면 모든 확장 속성에 대한 링크를 제공하는 이전 tCustomers 테이블에 단일 열이 추가됩니다.

tCustomer으로 변경되지 않은 두 개의 표가 실제로 필요하다면 원하는대로 정확히 달성하기 위해 일부 농구를 뛰어 넘을 필요가 있다고 생각합니다. 확실히 가능하지만 가장 좋은 대답은 the DevExpress support center입니다 (모든 DevExpress 관련 질문에 해당). 샘플 프로젝트를 게시하면 DevExpress 팀이 해당 상황에 가장 적합한 방법을 신속하게 제공합니다.