2008-09-17 3 views
1

입력 된 (연결되지 않은) 데이터 집합과이 데이터 집합으로 생성 된 많은 레코드 (이진 데이터 집합)가 있습니다. 유형 중 하나에 속성을 추가했으며 이전 데이터를 새 데이터 세트로 변환하려고합니다. 나는 그들을로드하는 방법을 알고 : 이전 스키마 dll BinaryFormatter에 대한 사용자 지정 바인더를 제공. 질문은 이전 형식의 개체를 새 형식의 개체로 변환하는 방법입니다. 두 형식 모두 같은 이름이지만 새 형식에는 하나 이상의 속성이 있습니다.유형 중 하나가 변경되었을 때 Typed DataSet Scheme을 변환하는 방법은 무엇입니까?

답변

0

새 클래스를 이전 클래스에서 상속받을 수 있습니까? 그렇다면 캐스팅을 통해 새 매개 변수로 간단히 비 직렬화 할 수 있습니다.

그렇지 않으면 이전 클래스와 새 클래스에 대한 참조를 서로 다른 네임 스페이스에 포함하고 이전 개체를 수분을 채우고 새 클래스의 개체로 전체 복사본을 수행하는 배치 작업을 구현하는 것이 좋습니다. 새 객체를 직렬화하십시오.

2

기존 데이터 집합과 새 데이터 집합 간의 유일한 차이점이 추가 필드 인 경우 기존 데이터 집합을 XML에 기록한 다음 새 데이터 집합으로 읽음으로써 "업그레이드"할 수 있습니다. 추가 된 필드의 값은 DBNull입니다.

 MyDataSet myDS = new MyDataSet(); 
     MyDataSet.MyTableRow row1 = myDS.MyTable.NewMyTableRow(); 
     row1.Name = "Brownie"; 
     myDS.MyTable.Rows.Add(row1); 

     MyNewDataSet myNewDS = new MyNewDataSet(); 

     using(MemoryStream ms = new MemoryStream()){ 
      myDS.WriteXml(ms); 
      ms.Position = 0; 
      myNewDS.ReadXml(ms); 
     }