代码之家  ›  专栏  ›  技术社区  ›  15ee8f99-57ff-4f92-890c-b56153

LINQ到实体域服务

  •  0
  • 15ee8f99-57ff-4f92-890c-b56153  · 技术社区  · 14 年前

    我有一个域服务,派生自LinqToEntitiesDomainService<FOOEntities>

    它有一个方法,IQueryable<Bar>GetBar()。GetBar返回实体模型的LINQ查询。LINQ在LINQPad中运行良好。

    在Silverlight的XAML中,我有一个ListBox,它的ItemsSource指向同一个XAML文件中定义的DomainDataSource,名为dsGetBar。dsGetBar上的AutoLoad=“True”。dsGetBar的LoadedData事件有一个空处理程序。

    我在VS2010中运行这个。当我连接到两个WebDev.WebServer服务器处理和浏览器实例,然后加载页面,我在GetBar()和LoadedData处理程序中找到了断点。由此我乐观地推断,该服务正在被客户调用。

    在GetBar()中,我调用查询结果计数,返回24000并更改。我的方法返回很好,没有抛出任何异常。

    所以问题是:

    在加载数据中,dsGetBar.Data.Count计数== 0. 列表框中不会出现任何项目。万一我的ListBox项模板坏了,我就用DataGrid代替它。同样的交易。

    数据应该在哪里?如果没有,在哪里?当您想为控件提供项源时,ItemsSource是正确的属性吗?

    是否有任何已知的方法来找出服务和客户机之间发生了什么?

    更新

    查询方法成功完成后,服务返回504(“ReadResponse()failed:服务器没有为此请求返回响应”)。

    更新

    发生504是因为记录数超过65535。只有24000多个通过了LINQ中的where子句(如果没有where子句,则为74000个),因此这甚至不是对可以通过连线的内容的限制。荒谬的。这个数字很微小。

    更新

    …或者在需要用XAML显示大量记录时应该使用寻呼机。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Ronald Wildenberg    14 年前

    你可以用 Fiddler 查看客户端和服务器之间的情况。它是一个浏览器代理,拦截所有的浏览器流量,这样你就可以看到发生了什么。