Silverlight 是否可以更改服务器上的WCF RIA实体,将其发送到客户端,但不影响底层实体?

Silverlight 是否可以更改服务器上的WCF RIA实体,将其发送到客户端,但不影响底层实体?,silverlight,wcf-ria-services,Silverlight,Wcf Ria Services,从标题来看,这似乎是一个奇怪的要求,所以让我澄清一下 我在服务器上存储日期和时间以及它们的时区信息。我希望客户端能够使用与其所需时区匹配的参数请求这些对象,并接收具有适当数据的对象 假设我有一张特定时间的预订表。几排可能看起来像 BookingId | When | TimeZone | Notes 1 | 2011-05-06 12:00:00.000 | GMT +12 | null 2 | 2011-05-06 08:

从标题来看,这似乎是一个奇怪的要求,所以让我澄清一下

我在服务器上存储日期和时间以及它们的时区信息。我希望客户端能够使用与其所需时区匹配的参数请求这些对象,并接收具有适当数据的对象

假设我有一张特定时间的预订表。几排可能看起来像

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(“太平洋标准时间”)
的东西,结果实体将是上面的2个元组(可能没有时区字段),并调整它们的日期时间,以便在客户机的时区中给出时间,而没有额外的时区/偏移信息

我知道我可以在客户机上进行时区转换,但是如果我有多个不同的客户机,我会考虑在多个平台上复制这段(有些棘手的)代码,这是我不想做的

这里的问题是,如果服务器对这些实体(由EF支持)进行更改,则ObjectContext会跟踪这些更改。我相信有一个简单的方法可以解决这个问题

到目前为止,我想到的最好的解决方案是为我的预订对象创建一个DTO,我宁愿避免使用它,但在必要时会实现它


谢谢。

一种方法是,您只需创建该类类型的新对象,然后将数据从“真实”对象复制到该对象,并修改该对象的时间戳。当然,您不应该将其添加到ObjectContext:p。如果您返回此对象,它将非常好,您可以实现您的结果


更好的解决方案是为类创建分部类(Mindwell,它应该在同一名称空间中)并创建计算属性。如果您正在使用Silverlight,请在属性上使用
[DataMemberAttribute()]
,并相应地使用所需的时区填充您的信息。我认为这很好

第一种解决方案并不理想,因为如果某些对象(看起来是任意的)在发送时没有连接到对象上下文,那么它可能会让其他在客户端工作的程序员感到困惑。今天早上上班时,我会研究你的第二个解决方案,并让你知道:)