我想在我的域名服务中使用类似于:
的方法public SystemState GetSystemStatus()
{
return new SystemStatus
{
InterestingStatusValue1 = 1223,
OtherInterstingStatusValue = "abc",
}
}
这不起作用。没有为Silverlight客户端应用程序自动生成任何内容。如果我将它作为一个IQueryable方法,那么我会在客户端上生成一些东西。我将在上下文对象上获得SystemStates属性和Query方法。
有没有办法让这个简单的WCF调用?我想我可以为我的RIA网站提供WCF Silverlight启用服务,然后设置服务参考(这可能不对?)(为什么我不能在Silverlight应用程序中看到服务参考?)
乍一看似乎RIA服务强制实现一个非常以数据为中心/简单的CRUD,这对于表格编辑器来说非常有用,但对于落后于数据网格并且已经完成的LOB应用程序来说并非如此。
答案 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",
}
}
我不知道您的返回类型有多复杂,但我想如果它可以被序列化,它将起作用(不确定)。