DomainService可以返回单个自定义类型吗?

时间:2010-10-03 11:37:57

标签: silverlight-4.0 wcf-ria-services

我想在我的域名服务中使用类似于:

的方法
public SystemState GetSystemStatus()
{
    return new SystemStatus
    {
        InterestingStatusValue1 = 1223,
        OtherInterstingStatusValue = "abc",
    }
}

这不起作用。没有为Silverlight客户端应用程序自动生成任何内容。如果我将它作为一个IQueryable方法,那么我会在客户端上生成一些东西。我将在上下文对象上获得SystemStates属性和Query方法。

有没有办法让这个简单的WCF调用?我想我可以为我的RIA网站提供WCF Silverlight启用服务,然后设置服务参考(这可能不对?)(为什么我不能在Silverlight应用程序中看到服务参考?)

乍一看似乎RIA服务强制实现一个非常以数据为中心/简单的CRUD,这对于表格编辑器来说非常有用,但对于落后于数据网格并且已经完成的LOB应用程序来说并非如此。

1 个答案:

答案 0 :(得分:2)

您只能使用属性返回一个实体(假设SystemState是您的实体):

例如:

[Query(IsComposable = false)]
public SystemState GetSystemStatus()
{
    return new SystemStatus
    {
        InterestingStatusValue1 = 1223,
        OtherInterstingStatusValue = "abc",
    }
}

请记住,这仍然是一个查询,Ria Services将在您的DomainContext中生成一个方法,如:

EntityQuery<SystemState> GetSystemStatusQuery()

像普通的EntityQuery一样使用它,但请记住,您不能对返回的对象执行查询操作(排序或过滤)。

如果要在服务器上执行操作,请尝试使用[Invoke]属性。例如:

[Invoke]
public SystemState GetSystemStatus()
{
    return new SystemStatus
    {
        InterestingStatusValue1 = 1223,
        OtherInterstingStatusValue = "abc",
    }
}

我不知道您的返回类型有多复杂,但我想如果它可以被序列化,它将起作用(不确定)。