zoukankan      html  css  js  c++  java
  • WCF RIA Service实体类的自定义复杂类型属性在客户端不可见

    在WCF RIA Service实体类中如果加了自定义的复杂类型,例如下面的Children属性,就是一个实体自己的一个列表:

    09.191

    如果有个DomainService返回这个StudentResult:

    09.192

    那么在Silverlight客户端,你会发现实体StudentResult的Children属性不可见。

    原因和解决方法

    原因是WCF RIA Service是对WCFService的一个封装,对需要用到的实体用DataContract标记并序列化,并且有一个自动客户端代码生成的机制。在CodeGeneration的过程中,并不是每一个属性都会被自动生成,除非必要。解决办法是你手动指定CodeGeneration,比如[Include], [Associate]等服务器端标记,标记你需要这个属性,标记这个属性和其它实体的联系(外键关联比如)。

    09.193

    这样在Silverlight客户端就会自动获得实体的复杂对象。此处使用了[Include], [Associate]标记指定了属性需要CodeGeneration。

    继承的情况

    继承的情况下,也是没有问题的,看一个复杂一点的继承的代码:

    09.194

     

    继承并返回基类的情况

    上面的继承例子是在DomainService里面返回继承类,如果是返回基类(抽象类或者接口)到客户端的话,WCF序列化情况要复杂一些。需要用WCF的已知类型(Known Type)标记,具体请看MSDN和园友博文。有关WCF RIA Service的继承数据模型,完整请察看MSDN这篇文章《Inheritance in Data Models》

    Powered By D&J (URL:http://www.cnblogs.com/Areas/)
  • 相关阅读:
    第三章感想
    第二章感想
    第一章感想
    第9章 硬件抽象层:HAL
    第10章 嵌入式linux的调试技术
    第8章 蜂鸣器驱动
    第七章 I/O
    第六章 编写Linux驱动程序
    第五章 S3C6410
    源代码的下载和编译
  • 原文地址:https://www.cnblogs.com/Areas/p/2186619.html
Copyright © 2011-2022 走看看