首页 文章

使用EF POCO的DataContract / DataMember属性序列化到ASP.NET ViewState

提问于
浏览
0

我有一系列具有 DataContract 属性的EF POCO,以及 DataMember attributes 用于所有属性 except for the navigation properties .

这样,当我为WCF序列化对象时,只序列化了所需的属性,而忽略了导航属性 .

如果我尝试在ViewState中存储其中一个对象,我会得到该对象不可序列化的错误 . 但是,如果我将 Serializable 属性添加到对象,序列化程序也会尝试序列化所有导航属性,这反过来要求它们也被标记为可序列化 .

有没有办法强制 ViewStateStateBag )使用 DataContract 属性?是否可以自定义或替换 ViewState 序列化?

如果不可能,我是否必须使用 Selializable 属性用于类,而 NotSerialized 用于所有导航属性还是有更好的解决方案?

1 回答

  • 1

    有一个更好的解决方案 - 不要混合域 . 当您为WCF序列化对象时,您正在进入另一个域 - 数据传输对象的域,简称DTO .

    DTO与您的持久对象是分开的,它们没有复杂的导航属性,而是包含客户端所需的唯一数据 .

    commin的做法是使用Automapper或类似的子系统轻松转换/到DTO .

    http://en.wikipedia.org/wiki/Data_transfer_object

相关问题