2012-11-11 2 views
0

내가 작업중인 응용 프로그램은 REST 통신이있는 클라이언트/서버입니다. 나는 서버 측에서 db4o를 사용하고 싶다. 클라이언트는 항목을 갱신하거나 작성할 수 있습니다. 따라서 개체는 "Out of the ObjectContainer"에서 업데이트하기 위해 클라이언트의 서버로 돌아옵니다.연결이 끊긴 컨텍스트에서 db4o : 저장/업데이트 처리 방법

하자 : 당신이 볼 CA로, MyClass 클래스가 IdHolder에 대한 참조가

public class IdHolder 
    { 
    public Guid Id {get; set;} 
    } 

    public class MyClass : IdHolder 
    { 
    public string SomeData {get; set;} 
    public IdHolder Child {get; set;} 
    } 

.

이 db4o는 documentation에 따르면 내가이 개 솔루션이 있습니다 경우 1 년

을 처리 1. 내부 UUID 2. 수동 GUID를, 클라이언트는 특정 유형의 db4o는 알고 있어야 어셈블리를 db4o는에 대한 참조가 있어야합니다. 좋지 않은 Uuid.

위의 클래스 정의에서 implicite 인 경우에는 Guid 처리가 편리하지만 db4o는 내부 IdHolder 참조를 인식하지 못합니다. 예를 들어 :

  • O1는 DB에 저장된 IdHolder는
  • O2는 o2.Child와 MyClass에이 O1에게 O1의 O2는 저장 용 서버로 전송됩니다

, 중복 항목을 ==입니다 db4o는 o1이 이미 존재하고 o1.Id에서 찾을 수 있기 때문에 DB에 저장됩니다.

질문 : db4o를 사용하여 연결이 끊어진 시나리오를 처리하는 가장 좋은 방법은 무엇입니까?

편집 : 이러한 문제에

This part if the doc 다룬다. "합병". 나에게 매우 만족스러운 것 같지 않습니다. 나는 당신의 개념/기술적 아이디어에 열려 있습니다.

답변

1

기본적으로 db4o에서 지원하지 않습니다. 의사가 말하는 'merging''은 기본적으로 당신이 가진 최상의 옵션입니다.

db4o는 웹 앱에 적합하지 않습니다.

+0

그렇다면 "이 문제를 해결하는 방법"이 아니라 "DBMS를 변경하는 방법"에 대한 조언이 필요하십니까? 젠장, 나는 그런 대답을 두려워했다. 상속 된 모델을 가진 멋진 객체 지향 아키텍처가 오늘 죽은 것 같습니다. (나는 며칠을 기다릴 것이고, 다른 사람이 아무 관련이 없다면 답을 확인할 것입니다.) – Askolein

관련 문제