2011-03-23 2 views
0

제목을 읽는 것이 이상한 요청처럼 보일 수 있으므로 명확히하겠습니다.서버에서 WCF RIA 엔터티를 변경하고 클라이언트로 보내지 만 기본 엔터티에는 영향을 미치지 않을 수 있습니까?

나는 시간대 정보와 함께 서버에 날짜와 시간을 저장합니다. 클라이언트가 필요한 시간대와 일치하는 매개 변수를 사용하여 이러한 개체를 요청하고 해당 데이터로 개체를 수신 할 수있게하려고합니다.

그래서 저는 특정 시간 동안 예약 테이블을 가지고 있다고 말합니다. 행의 부부는 날짜 시간이 시간이 주어진되도록 조정과 (아마도 시간대 필드없이) 클라이언트는 GetBookings("Pacific Standard Time") 같은 것을 호출 할 것이며, 그 결과 기업은 위의 2 개 튜플 것

BookingId | When     | TimeZone | Notes 
     1 | 2011-05-06 12:00:00.000 | GMT +12 | null 
     2 | 2011-05-06 08:00:00.000 | GMT +2 | null 

처럼 보일 수 있습니다 추가 표준 시간대/오프셋 정보없이 클라이언트의 표준 시간대.

나는 클라이언트에서 표준 시간대 변환을 할 수 있음을 알고 있지만 다중 클라이언트가있는 경우 여러 플랫폼에서이 (다소 까다로운) 코드를 복제하려고합니다.

여기서 문제는 서버가 (EF가 지원하는) 이러한 엔터티를 변경하면 ObjectContext가 변경 내용을 추적한다는 것입니다. 이 문제를 해결하는 간단한 방법이있을 것이라고 확신합니까?

필자가 생각한 가장 좋은 해결책은 내 예약 객체 용 DTO입니다. 필자는이를 피하고 필요한 경우 구현할 것입니다.

감사합니다.

답변

1

음, 한 가지 방법은 해당 클래스 유형의 새 객체를 만들고 "실제"객체의 데이터를이 객체로 복사하고이 객체의 타임 스탬프를 수정할 수 있습니다. offcourse 당신은 이것을 ObjectContext에 추가하면 안됩니다 : p. 이 객체를 반환하면 간단하게 좋을 것이고 결과를 얻을 수 있습니다.

더 나은 해결책은 클래스의 부분 클래스를 만드는 것입니다 (Mindwell은 동일한 네임 스페이스에 있어야 함). 계산 된 속성을 만듭니다. Silverlight를 사용하는 경우 속성에 [DataMemberAttribute()]을 사용하고 원하는 시간대에 따라 정보를 채 웁니다. 나는 이것이 좋은 것이라고 생각한다.

+0

첫 번째 솔루션은 이상적인 방법이 아닙니다. 일부 개체가 유선으로 전송 될 때 개체 컨텍스트에 연결되어 있지 않은 경우 클라이언트에서 작업하는 다른 프로그래머를 혼란스럽게 할 수 있기 때문입니다. 오늘 아침 일하면서 두 번째 해결책을 찾아보고 알려 드리겠습니다. :) –

관련 문제