Можно ли вносить изменения в объекты RIA WCF на сервере, отправлять их клиенту, но не влиять на базовые объекты? - PullRequest
0 голосов
/ 23 марта 2011

После прочтения заголовка это может показаться странным запросом, поэтому позвольте мне уточнить.

Я храню даты и время на сервере вместе с информацией о часовом поясе.Я хочу, чтобы клиенты могли запрашивать эти объекты с параметром, совпадающим с требуемым часовым поясом, и получать объекты с соответствующими данными.

Итак, скажем, у меня есть таблица заказов на определенное время.Пара строк может выглядеть как

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

Клиент будет вызывать что-то вроде GetBookings("Pacific Standard Time"), и получающийся в результате объект будет представлять собой 2 вышеупомянутых кортежа (вероятно, без поля часового пояса) с их настройками DateTimes, таквремя указывается в часовом поясе клиента, без дополнительной информации о часовом поясе / смещении.

Я знаю, что могу просто преобразовать часовой пояс на клиенте, но если у меня несколько разных клиентов, я просматриваюдублирование этого (несколько хитрого) кода на нескольких платформах, что я не хочу делать.

Проблема здесь в том, что если сервер вносит изменения в эти объекты (которые поддерживаются EF), то эти изменения отслеживаются ObjectContext.Я уверен, что есть простой способ обойти это?

Лучшее решение, о котором я до сих пор думал, - это DTO для моего объекта Booking, которого я бы предпочел избежать, но в случае необходимости реализую.

Спасибо.

1 Ответ

1 голос
/ 24 марта 2011

Что ж, одним из подходов будет то, что вы можете просто создать новый объект этого типа класса и скопировать данные из вашего «реального» объекта в этот и изменить временную метку этого объекта.Конечно, вы не должны добавлять это в ObjectContext: p.Если вы вернете этот объект, он будет просто хорош, и вы сможете достичь своих результатов.

Лучшим решением будет просто создать частичный класс для вашего класса (Mindwell должен быть в том же пространстве имен) и создать вычисляемое свойство.Если вы используете Silverlight, используйте [DataMemberAttribute()] в свойстве и заполните соответствующую информацию желаемым часовым поясом.Я думаю, что это хорошо, чтобы пойти.

...