代码之家  ›  专栏  ›  技术社区  ›  BuddyJoe

Silverlight、EDM/Linq和WCF Web服务-如何将集合传递给Silverlight

  •  3
  • BuddyJoe  · 技术社区  · 15 年前

    将答案(集合)传递回Silverlight的正确方法是什么?

    例如,如果我有一个服务应用程序位于Northwind示例数据库的顶部,并且该服务有一个名为getEmployees()的方法。传递回Silverlight的“正确”是什么?一个IQueryable?

    那么考虑到Silverlight端的异步/结果强制转换功能,我该如何强制转换它呢?可替代的?

    更新:
    这是声明吗 [AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.allowed)]允许远程客户端查看来自服务的结构(实体)?我不知道有什么东西是Silverlight友好的WCF类,所以这不是我开始的。一旦我在解决方案中添加了这个属性,我就不会再使用没有它的服务了。所以我不能测试我以前看到的东西。有什么想法吗 允许AspNetCompatibilityRequirementsMode. 在引擎盖下面吗?

    更新2:
    见特里·多纳赫的评论。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Tad Donaghe    15 年前

    你刚才试过传递基类型数组吗?除非创建DataContracts,否则WCF不知道您的任何对象是什么。当你试图传递一个列表时,wcf实际上只是传递一个数组,因为它的目的是 尝试 相互操作。

    定义一个 DataContract 包含有关员工(或其他)的信息。尽量保持相对简单。当您创建代理(可能使用svcutil或添加服务引用)时,vs2008将自动在客户端神奇地定义数据控件,然后您可以像使用常规对象一样使用它们。

    我更喜欢手动使用WCF——我创建自己的契约、实现和代理DLL。这样做在反序列化和其他方面给了我很大的灵活性。有关更多信息,请参阅以下两个参考:

    WCF the Manual Way, the Right Way

    Manual WCF - an Extension

    另外,请参阅《世界自然基金会圣经》第3章,Juval Lowy的“为世界自然基金会服务编程”。它充满了关于数据合同的信息。

        2
  •  0
  •   Jeff Yates    15 年前

    在使用常规的Web服务时,您必须返回一些集合,比如列出SOAP格式化程序,以了解如何处理它。但是,我没有使用过WCF,所以我不知道这是否有不同的作用。

        3
  •  0
  •   John Saunders    15 年前

    只需返回一个列表。如果你能退一张单人票 T ,然后您可以返回一个列表< T &。