【问题标题】:Dynamic choose connection entity framework rest动态选择连接实体框架休息
【发布时间】:2010-11-12 10:58:27
【问题描述】:
我有一个非常简单的实体框架 (.edmx) 文件和一个 .svc 休息服务。
CRUD 操作一切正常。
我有许多共享完全相同架构的数据库。
我的下一步是让客户端传递一个参数,该参数可以是连接字符串或其他标识用户的值,以便服务从正确的数据库中提供数据。
现在,唯一的参数是 ServiceRoot 的 uri
我在数据模型中看到我可以传递一个连接字符串,但是我怎样才能从客户端执行此操作而不创建许多服务文件。
【问题讨论】:
标签:
c#
wcf
entity-framework
rest
odata
【解决方案1】:
我假设您正在使用 WCF 数据服务来公开 edmx 文件。我不是这个工具集的专家,但我怀疑唯一直接的方法是为每个数据库创建一个服务。
这是一个很好的问题,我希望在未来的 WCF HTTP 堆栈中解决这个问题。
与此同时,有一些积极的消息。我过去曾尝试创建大量服务主机(大约 1000 台),我的实验表明启动非常高效,并且不会消耗大量 RAM。关键是用代码而不是通过配置文件创建服务主机。显然,您不想手动编写包含数千个服务条目的 XML 配置文件!
这可能不是理想的解决方案,但我相信它会奏效。
【解决方案2】:
如果您使用 WCF 数据服务,您应该能够传递标识数据源的信息以在 HTTP 请求中使用。作为 URL 中的自定义选项或自定义 HTTP 标头(我可能会使用自定义标头,因为它更容易从客户端使用)。
根据您托管服务的方式,您应该能够访问服务器上请求的标头。您可以使用 ASP.NET 方式来执行此操作(静态变量),或者您可以挂钩到 WCF 数据服务的处理管道,这也应该允许您访问这些标头。