2009-04-17 4 views
2

데이터베이스 추상화에 LINQ-to-SQL을 사용하는 웹 서비스에서 작업하고 있습니다. 클라이언트가 웹 서비스를 사용하면 객체가 XML로 직렬화되고 모든 것이 멋지게됩니다.LINQ 데이터 개체를 전송하는 중

이제 개체 -> xml-> 개체를 수행 할 이유가 없기 때문에 원시 데이터 형식을 사용하는 자체 클라이언트를 개발하고 싶습니다. 그러나 LINQ 개체를 데이터베이스에 직접 매핑 할 때 LINQ 개체를 전송할 수 없다는 것을 알고 있으므로 데이터는 "라이브"입니다.

제 질문은 추출한 데이터의 "스냅 숏"을 가져 오는 방법이 있는지, LINQ 개체를 "오프라인"으로 설정 한 다음 전송하는지 여부입니다. 데이터가 클라이언트로 전송 된 후 데이터가 변경되지 않으며 데이터베이스에 액세스 할 필요가 없습니다.

답변

1

WCF (webservice 및 클라이언트 용)를 사용하려는 경우 [DataContract] 및 [DataMember] 속성을 사용하여 Linq2SQL 생성 클래스를 꾸밀 수 있습니다.

확인 몇 가지 지침은 다음 링크 :

2

LINQ - 투 - SQL 클래스 (DataContractSerializer 사용할 수 있습니다 WCF 용) 쉽게 (당신은 디자이너에서 직렬화 속성을 사용하도록 설정합니다.) 이를 통해 클라이언트와 데이터 어셈블리를 공유 할 수 있어야합니다. 데이터 컨텍스트를 사용하지 않는 한 객체 자체는 올바르게 작동해야합니다 (연결이 끊어져서 게으른로드가 발생하지 않음).

트릭은 직렬화 코드에서 이러한 유형 (기존 어셈블리의)을 다시 사용해야한다는 것입니다. WCF를 사용하는 경우 svcutil /r 또는 IDE를 통해이 작업을 수행 할 수 있습니다.

그건 그렇고, 이러한 시나리오에 대해 별도의 DTO 클래스를 유지하는 것이 종종 더 깨끗합니다. 그러나 나는 때때로 위와 같은 방법으로 그렇게하고있다.

관련 문제