2010-03-23 123 views
2

任何人都知道如何在运行中更改DataServices的当前数据源?更改数据源WCF数据服务

例子我想咨询一下服务并传递一个参数来说明拿起另一个连接,可能吗?

回答

0

如果你想在URL中传递所需的连接,我认为你唯一的选择是创建两个DataServiceHosts。

http://server/datasource1/service.svc 

http://server/datasource2/service.svc 
1

它应该是很简单的有一个重写方法,您可以使用它创建一个数据源。

// 
// Summary: 
//  Creates a data source of the template class that will be used by the data 
//  service. 
// 
// Returns: 
//  An instance of the data source. 
protected virtual T CreateDataSource(); 

重写它应该看起来像这样。

protected override MyModel CreateDataSource() 
{ 
    MyModel modal = new MyModal(); 

    return modal; 
} 

这样就可以使用不同的连接字符串创建数据源。

下面我已经添加了一些可以将这些信息传递给DataService的事情列表,以便您可以随时更改数据源的连接。

1.请求头

您可以在客户端通过额外的信息,数据服务,如果您订阅的SendingRequest的DataServiceContext,它允许你额外的请求头添加到您的Web请求。一旦你这样做了,例如你可以通过访问CreateDataSource方法上的System.Web.HttpContext.Current.Request.Headers来读取它们。

如果能够访问内部的IDataService接口,就可以获得所需的所有信息,这样做会很不错。

2.查询字符串

另一个与出做SendingRequest和头部的方法是添加一个查询参数,你可以在特定的值检查,并相应地初始化数据源。

3.身份

您可以使用用户凭据来选择你要使用的数据源。

这些仅仅是关于如何实现这种数据源选择的想法。

你可以做很多事情上面我希望这回答你的问题的战略,它可以帮助你解决问题

PS:只要你通过“更改数据源”的意思是变化上面的模型到另一个数据库的连接字符串将工作。

0

尝试覆盖DataService类中的CreateDataSource函数。

这将允许您使用任何连接字符串创建自己的数据源。