Silverlight中的中间件ado.net dataservice

时间:2008-12-22 01:42:12

标签: silverlight-2.0 wcf-data-services

我们正在将Silverlight 2与ADO.NET数据服务一起使用,并测试我们在相同域中使用服务的silverlight页面,该工作正常。然后我们决定尝试使用代理或中间服务(与Silverlight应用程序位于同一个域中),这基本上只是表示位于另一个域中的服务(通过使用在其他域中的服务的服务引用中生成的类作为在我们的本地服务中公开的类型,并创建一个将Uri设置为指向的构造函数。我们希望这样做,因为我们希望我们的Silverlight服务器位于DMZ中,我们的服务位于内部域,因为我们也将使用该服务用于内部应用程序,这似乎是跨域的一种方式Silverlight的局限性。

当我们使用以下查询时,这可以正常工作:

var questions = (from q in context.Question
                            select q)

但是一旦我们尝试使用expand,就像:

var questions = (from q in context.Question.Expand("Answers")
                            select q)

我们得到一个例外陈述:

只能在上次投影后指定查询选项(orderby,where,take,skip)。

堆栈跟踪的位置为:

at System.Data.Services.WebUtil.GetRequestEnumerator(IEnumerable enumerable)    在System.Data.Services.DataService 1.SerializeResponseBody(RequestDescription description, IDataService dataService) at System.Data.Services.DataService 1.HandleNonBatchRequest(RequestDescription description)    在System.Data.Services.DataService`1.HandleRequest()

有没有人对此背后的原因有任何建议?当然,这在内部服务上工作正常但我认为既然查询是可组合的,那么这也可以在代理服务上工作......

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我们通过在客户端使用LoadProperty方法设法解决了这个问题。这样我们就可以检索所有问题,然后调用LoadProperty(“答案”)和问题。