Firebird 데이터베이스를 데이터 저장소 (포함 모드)로 사용하고 ORM에 NHibernate를 사용하는 데스크톱 (winforms) 응용 프로그램이 있습니다. 우리가 지원해야하는 기능 중 하나는 데이터 그룹을 외부 파일로 가져오고 내보낼 수있게하는 것입니다. 현재이 외부 파일은 기본 데이터베이스와 동일한 스키마를 가진 데이터베이스이기도합니다.NHibernate를 사용하여 여러 데이터베이스 간의 개체 복사
나는 이미 여러 개의 데이터베이스를보기 위해 NHibernate를 설정하고 두 데이터베이스를 동시에 사용할 수있다. 그러나 문제는 두 데이터베이스간에 데이터를 복사하는 것입니다. 저는 두 가지 복사 전략을 가지고 있습니다 : (1) 객체에 대한 동일한 ID (일명 가져 오기/내보내기)와 (2) 대부분 새로운 ID [일명 중복/복사본]로 복사합니다. 같은 ID로 항상 복사되는 조회 항목이 있기 때문에 "거의 새로운"이라고 말합니다.
모든 사본을 만들고 새 ID를 할당하지 않거나 (개체 트리의 모든 ID를 지울 수있는) "CopyForExport"메서드가 있기 때문에 새로운 ID로 모든 것을 복사하면됩니다.
이 상황을 처리하고 동일한 ID를 유지하면서 데이터베이스간에 데이터를 복사하는 "모범 사례"방법은 무엇입니까?
설명 : 하위 집합 (사용자 선택 가능) 또는 다른 사람에게 전송할 데이터 (자신의 데이터베이스로 데이터의 하위 집합을 가져 오는)를 내보내는 두 개의 데이터베이스를 동기화하려고하지 않습니다.
추가 설명 : 나는이 문제를 다음과 같이 분리했다 : NHibernate의 ISession.SaveOrUpdate 기능을 사용하려고하는데 "할당되지 않은"ID 생성기로 엔티티를 설정했다. 그러나, 동일한 프로세스에서 여러 데이터베이스간에 데이터를 복사하기 위해 생성 된 ID를 재정의하려는 경우 문제점이 있습니다.
Guid.Comb 또는 UUID 생성기를 사용할 수 있지만 때때로 (동일한 스키마로 다른 데이터베이스 연결로 전송할 때) 내 고유 식별자를 지정할 수있는 방법이 있습니까?
마지막으로이 솔루션을 찾았는데 비슷한 문제가있었습니다. 나는 그것이 최대 절전 모드 사이트가 현재 다운 된 것을 돕지 않았다고 가정한다. – LizB