2013-03-25 1 views
0

나는 20 개 이상의 클래스로 구성된 간단한 세트가 있습니다. 그것들은 모두 웹 서비스 내에서 이러한 객체를 사용할 수 있도록 직렬화 가능합니다. (DataContract/DataMember) 각 클래스에는 클래스에 따라 ID와 다른 속성의 개수가 다양합니다.
그리고 ID를 저장하는 데이터베이스, 클래스를 식별하는 이름 및 XML 문자열이 있습니다. 또한이 XML은 직렬화 된 형식의 데이터와 동일하지만 속성이 하나도없는 경우 : ID 필드가 중복되어 저장되어서는 안됩니다.
그러나 ID는 여전히 웹 서비스의 클라이언트로 전송되어야하므로 약간 복잡합니다. 그리고 각 클래스의 복사본을 만들 수는 있지만 ID를 DataMember로, 다른 클래스는 ID를 가지고 있지 않습니다.이 문제를 해결하기 위해 훨씬 더 깨끗한 솔루션을 찾고 있습니다. 데이터베이스 내에서 XML의 일부로 ID 필드를 저장할 필요가없는 곳.
질문 : ID가 클라이언트로 전송되는 데이터의 일부가되지만 XML로 저장할 때 건너 뛴다는 것을 확인하는 가장 간단한 솔루션은 무엇입니까?특정 필드가 있거나없는 데이터 직렬화

+0

추가 참고 사항 : 웹 클라이언트는 ID를 기반으로 데이터를 호출하고 나중에이 ID를 기반으로 적절한 레코드를 찾고 데이터를 지정된 클래스의 적절한 개체로 변환하고이 개체에 ID를 추가합니다. 클라이언트에게 다시 보내기 전에. 나는 ID 없이는이 객체가 절대로 필요하지 않겠지 만 ID가 없으면 ID가 중복되기 때문에 데이터베이스에 저장해야합니다. (그리고 ID를 변경하는 것이 더 어렵습니다.) –

답변

1

(. 그것을 제거하기 위해 XML에 해킹 할 필요없이) 그리고 있지만 난 그냥 하나 DataMember를 같은 ID를 가지고 있으며, 다른 하나는

을하지 않는 각 클래스의 사본을 만들 수 있습니다

상속은 어떨까요?

public class MyEntity 
{ 
    // some props 
} 

public class MyEntityWithId : MyEntity 
{ 
    public int Id { get; set; } 
    // some props 
} 
+0

상속은 클래스의 양을 두 배로 만듭니다. 그리 바람직하지는 않습니다. 또한 클래스간에 데이터를 복사해야한다는 것을 의미합니다. –

+0

클래스의 양에 대해 동의하지만 두 번째 문제는 Automapper와 같은 매퍼로 쉽게 해결할 수 있습니다. – Dennis

관련 문제