是否可以使用WCF数据服务查询多个数据库?

时间:2011-01-11 15:40:19

标签: .net wcf .net-4.0 wcf-data-services

我将数据插入到具有相同架构的多个数据库中。出于性能原因,存在多个数据库。

我需要创建一个客户端可以用来查询数据库的WCF服务。但是从客户的角度来看,只有1个数据库。我的意思是当客户端执行查询时,它应查询所有数据库并返回组合结果。

我还需要为客户端提供定义自己查询的灵活性。因此,我正在研究WCF数据服务,它为客户端指定的查询提供了非常好的功能。

到目前为止,似乎DataService只能对单个数据库进行查询。我发现没有覆盖可以让我将查询分派给多个数据库。

是否有人知道WCF数据服务是否可以针对具有相同架构的多个数据库进行查询?

3 个答案:

答案 0 :(得分:1)

我认为你必须编写一个外观服务,将查询分配给基础 - 无论是顺序还是并行。您通常会以这样的方式创建外观,即WCF数据服务使用Reflection Provider,您可以使用LINQ to SQL或Entity Framework作为底层数据库。

如何:使用Reflection Provider(WCF数据服务)创建数据服务: http://msdn.microsoft.com/en-us/library/dd728281.aspx

HTH,

- larsw

答案 1 :(得分:1)

I posted the question on the MSDN forums并发现需要付出很多努力。

它涉及creating your own data service provider,这很棘手,可以做很多工作。最重要的是,与排序+分页的合并结果将是一项过于复杂且对我愿意做的事情有风险的任务。例如,如何查询按名称列排序的页面1000的多个数据库?我基本上必须查询所有数据库中的所有数据,按名称排序,然后选择第1000页。

答案 2 :(得分:0)

好像你需要使用不同的方法。我在谈论分布式缓存,例如Oracle Coherence或NCache。结构非常透明 - 您可以与内存数据库进行交互,该数据库与您的“支持映射” - 一个或多个数据库同步。

此类缓存中有许多有趣的功能。例如,您可以更改商店策略或使用不同的数据库(MS SQL,Oracle等)构建支持映射

相关问题