动态选择连接实体框架休息

时间:2010-11-12 10:58:28

标签: c# wcf entity-framework rest odata

我有一个非常简单的实体框架(.edmx)文件和.svc休息服务。

CRUD操作一切正常。

我有许多数据库共享完全相同的架构。

我的下一步是让客户端传递一个参数,该参数可以是连接字符串或标识用户的其他值,以便服务从正确的数据库提供数据。

现在,唯一的参数是ServiceRoot的uri

我在数据模型中看到我可以传递一个连接字符串,但是如何在不创建许多服务文件的情况下从客户端执行此操作。

2 个答案:

答案 0 :(得分:0)

我假设您正在使用WCF数据服务来公开edmx文件。我不是这个工具集的专家,但我怀疑唯一直接的方法是为每个数据库创建一个服务。

这是一个很好的问题,我希望将来会在未来的WCF HTTP堆栈中解决这个问题。

与此同时,还有一些利好消息。我过去曾经尝试过创建大量服务主机(大约1000个),我的实验表明启动它并且不消耗大量RAM非常有效。关键是在代码中而不是通过配置文件创建服务主机。显然,您不希望手写编写包含数千个服务条目的XML配置文件!

它可能不是理想的解决方案,但我相信它会起作用。

答案 1 :(得分:0)

如果您正在使用WCF数据服务,则应该能够传递标识要在HTTP请求中使用的数据源的信息。作为URL中的自定义选项或作为自定义HTTP标头(我可能会使用自定义标头,因为它更容易从客户端使用)。 根据您托管服务的方式,您应该能够访问服务器上的请求标头。您可以使用ASP.NET方法执行此操作(静态变量),或者您可以挂钩到WCF数据服务的处理管道,这也允许您访问这些头文件。