RIA服务变更跟踪

时间:2011-06-27 14:30:23

标签: c# .net wcf wcf-ria-services

我正在使用Silverlight RIA Services开发解决方案。其中一个要求是向客户端发送“推送”通知,我正在使用对服务器的阻塞调用来实现,并在收到更新时返回。尝试使用通用结构实现这一点,我来到这个数据结构:

    public class Change
{
    public ObjectType Type { get; internal set; } // objecttype is an enum
    public int ObjectKey { get; internal set; }
    public string PropertyName { get; internal set; }
    public object OldValue { get; internal set; }
    public object NewValue { get; internal set; }
    //key required for RIA Services
    [Key]
    public Guid ChangeGuid { get; private set; }
}

除了此设计中的一些明显缺陷(这只是一个测试)之外,由于对象的类型,属性OldValueNewValue在客户端上不可见。这些属性的值始终为Entity Framework primitive

有没有办法在不将所有内容转换为字符串的情况下将OldValueNewValue提供给客户端?

由于object关键字使搜索结果混乱,谷歌搜索并没有让我走得太远。

对我的问题的任何一般解决方案表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果您将WCF序列化为“对象”,则无法隐式地在客户端重新引入其他接口/类型。无论如何,你有效地将它们串行化为字符串。

关于什么类型的对象“它确实是”的内部细节不会在序列化中保留。

每个ObjectType枚举值一个可空成员怎么样,只设置你需要的那个?这可能会为传输的数据增加一些开销,但可能更易于管理,并且会为您提供强类型对象。