如何通过WCF数据服务公开相关数据?

问题描述:

我已经通过亚历克斯D.詹姆斯三岁的博客文章作为阅读这里找到:如何通过WCF数据服务公开相关数据?

http://blogs.msdn.com/b/alexj/archive/2010/02/24/creating-a-data-service-provider-part-8-relationships.aspx

它是关于通过WCF数据服务暴露的自定义数据美妙的博客系列。在题为“关系”的第8篇文章中,他谈到如何描述和公开相关数据。正如一位评论者所指出的那样,这篇文章的问题在于他在记忆中这样做,但并未解释如何动态提供相关数据。

以他的例子为例,我想通过数据库动态获取我的“产品”。我怎么做?

您需要编写自定义的IQueryable实现。 WCF DS服务器将构建一个描述查询的LINQ查询(包括所有扩展和对所有属性的访问)。通过自定义实现,您可以将此类查询转换为任何您想要的。或者您可以覆盖查询评估(GetEnumerator和枚举器执行)以从某处检索相关数据。

请注意,这绝对不是一件小事。我写了一系列有关LINQ表达式树的博客文章,这些树都是生成的,每个部分的意思是什么。您需要在代码中至少部分识别这些属性以实现相关属性的延迟加载。 http://blogs.msdn.com/b/vitek/archive/2010/02/25/data-services-expressions-part-1-intro.aspx

+0

谢谢卡拉斯先生,这是你在其他一些论坛上的帖子,这让我转向了詹姆斯先生的帖子。我有一半担心这些帖子可能会过时。 –

+0

我现在已经阅读了前四篇文章,我不认为这是我需要的。我没有提到的是,我的查询根将是一个先前构造的LInQ到EF。在这种情况下,我是否仍然需要创建自己的IQueryable或者这样做?此外,在重读詹姆斯先生的帖子之后,我想我错过了关于关系如何运作的一些不太清楚的事情。 AssociationSet是否告诉WCF数据服务为相关类型获取不同的查询根?如果是这样,这对我来说都是有意义的。 –

+0

嗨,它再次。我完成了你的博客系列,这是我一直在寻找的最后一个博客。感谢您写这篇文章。 –