2010-03-23 121 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函數。

這將允許您使用任何連接字符串創建自己的數據源。