DBEntry WCF支持

Topics: Developer Forum, User Forum
Sep 16, 2010 at 9:50 AM

DBObjectModel<T>等类都是标注了ISerializable的,实体类继承后再标注[DataContact],WCF服务启动时就会抛出异常,大概是说ISerializable和DataContract标注不能共存之类的,于是只能将实体类继承IDbObject接口,这样一来就麻烦很多了,请问如何解决?

Coordinator
Sep 16, 2010 at 10:54 AM

可以尝试下面这个链接里的答案:

http://social.msdn.microsoft.com/forums/en-US/wcf/thread/5fdfc1d7-89f2-4f8b-a491-d9ac2cb0600c

不过,如果要全面支持WCF各种子协议,确实是直接继承 IDbObject 更合适一些。

Sep 17, 2010 at 1:03 AM

如果我没理解错的话,那个链接里的答案其实就是要求实体类只继承ISerializable就好了,不去标注DataContract,但是实际试验下来,客户端添加Service Reference后根本没有生成相应的实体类的代理,返回该实体类的Operation的返回值都变成了DataSet,这又是为什么呢?

Coordinator
Sep 17, 2010 at 3:16 AM

没研究过WCF生成的代理类的问题,不过ISerializable的意义就是用户会自定义序列化行为,所以想来DataContract的问题,是因为.Net不知道如何生成代理类。

继承ISerializable主要是支持Remoting,不过WCF应该是更复杂一些的。

看那篇文章中的说法,应该是只支持部分情况的,所以我才说,如果要全面支持WCF协议,直接继承 IDbObject 更合适一些。