WCF RIA Service实体类的自定义复杂类型属性在客户端不可见
2011-09-23 20:15
351 查看
在WCF RIA Service实体类中如果加了自定义的复杂类型,例如下面的Children属性,就是一个实体自己的一个列表:
如果有个DomainService返回这个StudentResult:
那么在Silverlight客户端,你会发现实体StudentResult的Children属性不可见。
这样在Silverlight客户端就会自动获得实体的复杂对象。此处使用了[Include], [Associate]标记指定了属性需要CodeGeneration。
如果有个DomainService返回这个StudentResult:
那么在Silverlight客户端,你会发现实体StudentResult的Children属性不可见。
原因和解决方法
原因是WCF RIA Service是对WCFService的一个封装,对需要用到的实体用DataContract标记并序列化,并且有一个自动客户端代码生成的机制。在CodeGeneration的过程中,并不是每一个属性都会被自动生成,除非必要。解决办法是你手动指定CodeGeneration,比如[Include], [Associate]等服务器端标记,标记你需要这个属性,标记这个属性和其它实体的联系(外键关联比如)。这样在Silverlight客户端就会自动获得实体的复杂对象。此处使用了[Include], [Associate]标记指定了属性需要CodeGeneration。
继承的情况
继承的情况下,也是没有问题的,看一个复杂一点的继承的代码:继承并返回基类的情况
上面的继承例子是在DomainService里面返回继承类,如果是返回基类(抽象类或者接口)到客户端的话,WCF序列化情况要复杂一些。需要用WCF的已知类型(Known Type)标记,具体请看MSDN和园友博文。有关WCF RIA Service的继承数据模型,完整请察看MSDN这篇文章《Inheritance in Data Models》。相关文章推荐
- WCF RIA Service实体类中发复杂类型
- WCF Service 如何向客户端传输复杂类型(尚未成功, 只是记录一下不可行的方案, 以后再了解).
- [Silverlight]WCF RIA SERVICE如何返回自定义类型(非Entity)
- WCF RIA SERVICE如何返回自定义类型(非Entity)
- ibatis 复杂类型属性(自定义类型的属性)
- [Silverlight学习笔记]关于利用WCF RIA Service进行通信并在客户端获取数据
- 关于wcf ria service 中复杂条件查询的经验小结
- ibatis 复杂类型属性(自定义类型的属性) 避免n+1次select(1:1)
- 32-35. Struts2_类型转换错误消息的显示和定制&自定义类型转换器&类型转换器与复杂属性&集合协同使用
- 【Ibatis】(十三)、复杂类型属性(即自定义类型的属性)
- ###Springmvc封装复杂表单数据:表单提交多个实体类的参数【对象类型参数,自动封装】name属性值不能重复。和实体类属性名一致
- WCF客户端引用带有 int bool 类型的方法时,会自动加上一个Specified参数的 解决方法 Web Reference for a WCF Service has Extra “IdSpecified” Parameter -摘自网络
- android Service之四:传递复杂数据类型的远程服务
- WCF基础教程(四)——数据契约实现传送自定义数据类型
- java中如何遍历实体类的属性和数据类型以及属性值
- 关于WCF Ria Service的一些资料
- [WCF安全系列]绑定、安全模式与客户端凭证类型:NetNamedPipeBinding、NetTcpBinding与NetMsmqBinding
- 八.Spring的属性注入-注入对象,复杂的集合类型属性
- Spring(8)注入复杂类型属性
- WCF RIA 服务 (二十二)-- Silverlight 客户端 3