我有一个通过网络远程处理的共享对象。问题是这个对象有一些 EntitySet 和 EntityRef 属性。当我尝试运行该程序时,我收到一个异常,告诉我 EntitySet 未标记为可序列化。如果我将其标记为可序列化,一切似乎都可以,但是当我尝试从外部访问 EntitySet 表示的属性时,我无法使用它。
任何建议将不胜感激。
提前致谢。
顺便说一句,有谁知道如何更改 tcp 通道的默认二进制序列化?
我有一个通过网络远程处理的共享对象。问题是这个对象有一些 EntitySet 和 EntityRef 属性。当我尝试运行该程序时,我收到一个异常,告诉我 EntitySet 未标记为可序列化。如果我将其标记为可序列化,一切似乎都可以,但是当我尝试从外部访问 EntitySet 表示的属性时,我无法使用它。
任何建议将不胜感激。
提前致谢。
顺便说一句,有谁知道如何更改 tcp 通道的默认二进制序列化?
我终于找到了解决方案,让我解释一下:
在 LinqToSQL 中,用于注册两个表之间的关系(例如 1:M),您必须在 M 端声明一个 EntitySet,在另一个表上声明一个 EntityRef。
在我的例子中,我有一个代表 EntitySet 的私有属性,以及一个用于修改它的公共访问器。考虑到 Linq to Sql 需要通过 DataContract(对于类)和 DataMember(对于属性)进行显式修饰序列化,问题是我修饰了公共属性而不是私有属性。
在那之后,一切都摇滚了!(我浪费了很多时间,但我学到了很多序列化)
尝试将单个属性和属性也标记为可序列化,这也应该让您也可以访问这些属性。
需要注意的是,Set 上的所有事件也需要序列化。
我认为事情发生在这里:http: //msdn.microsoft.com/en-us/library/bb546184.aspx
有一个处理 EntitySet 和序列化的示例。