Silverlight RIA服务需要伪公共的、非属性化的方法来编译

Silverlight RIA服务需要伪公共的、非属性化的方法来编译,silverlight,silverlight-4.0,wcf-ria-services,Silverlight,Silverlight 4.0,Wcf Ria Services,我正在服务器端使用WCF RIA服务实现Silverlight应用程序,我遇到了一个非常奇怪的行为 此时,服务非常简单,只有几个方法,所有方法都用[Invoke]属性标记。这些方法是这样的: [Invoke] MyEntity DoWorkAndReturnEntity(string someParameter) { var entity = new MyEntity(); //Do some preocessing... return entity; } 其中,MyE

我正在服务器端使用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;}
}
如果我尝试编译解决方案,会出现以下错误:

名为 “DoWorkAndReturnEntity”没有 符合要求的签名。 返回类型必须是实体, 实体的集合,或 预定义的可序列化类型

现在是有趣的部分。如果我添加了一个公共伪方法,该方法返回相同类型的实体,但具有no
Invoke
属性,那么它可以编译并完美地工作

public MyEntity __Dummy()
{
    return null;
}
无论返回的对象的类型如何,所有方法都会发生这种情况。因此,我必须为每个返回的对象类型添加一个伪方法


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

WCF RIA Services使用约定的配置,您的
DoWorkAndReturnEntity
方法需要使用
[Query]
属性修饰,或者根本不使用属性,因为
[Query]
是默认值,就像您的
\uu虚拟方法一样。

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

调用方法无法返回实体类型,除非它是域服务返回的实体之一。。。因此_u伪查询方法可以让事情顺利进行