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

RIA服务需要虚拟的公共非属性方法来编译

  •  0
  • Konamiman  · 技术社区  · 14 年前

    我正在使用服务器端的WCF RIA服务实现Silverlight应用程序,我遇到了一个非常奇怪的行为。

    此时,服务非常简单,只有几个方法,所有方法都用 [Invoke] 属性。这些方法如下:

    [Invoke]
    MyEntity DoWorkAndReturnEntity(string someParameter)
    {
        var entity = new MyEntity();
        //Do some preocessing...
        return entity;
    }
    

    何处 MyEntity 类型具有一个公共属性 [Key] 属性:

    public class MyEntity
    {
        [Key]
        public int Key {get;set;}
    }
    

    好吧,如果我试图编译解决方案,我会得到以下错误:

    命名操作 'DoWorkandRentEntity'不 符合要求的签名。 返回类型必须是实体, 实体集合,或 预定义的可序列化类型。

    现在有趣的部分来了。如果我添加一个公共伪方法,该方法返回相同类型的实体,但 Invoke 属性,然后它编译并工作得很好!

    public MyEntity __Dummy()
    {
        return null;
    }
    

    This happens with all methods, regardless of the type of the object returned. So I have to add a dummy method for each returned object type.

    我完全困惑了。这里发生了什么?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Nikhil Kothari    14 年前

    实体类型由域服务中的一组查询方法定义。

    调用方法不能返回实体类型,除非它是域服务返回的实体之一…因此,_uuu dummy query方法可以使事情正常进行。

        2
  •  0
  •   Rafa Castaneda    14 年前

    WCF RIA服务使用按约定的配置, DoWorkAndReturnEntity 方法需要用 [Query] 属性或之后完全没有属性 [查询] 默认值是否与 __Dummy 方法。