2010-07-22 25 views
0

我有幾個數據庫包含完全相同的基表完全相同的設計。現在我需要能夠從任何一個數據庫訪問基表。訪問平等數據庫的接口

有什麼辦法可以創建一個仍然可以使用Linq2Sql的通用界面?我在想,我想有一個工廠,創造了該選擇的數據庫,我可以事後查詢數據方面:

string university = "SomeUniversity"; 
var database = UniversityDataContextFactory.Get(university); 
var user = database.Users.Where(u => u.Id== id).First(); 

然而,這將需要從各個數據庫返回的數據上下文來實現共享接口並且很可能也共享數據類。

+0

你會使用Linq2Sql更新表中的數據嗎? – 2010-07-22 14:07:51

+0

是的,我會的。我會像其他地方一樣使用Linq。 – 2010-07-29 12:48:38

回答

0

如果數據庫模式相同,那麼您只需要一組數據類 - 一個「數據上下文」與另一個「數據上下文」之間的唯一區別就是連接字符串。

這是事情變得更有趣的地方。如果您正在顯式創建數據上下文(就像您的工廠示例中那樣),那麼只要您有辦法提供/創建適當的連接sting就沒有問題,因爲數據上下文有一個構造函數,它將連接字符串作爲一個參數。但是,如果你隱式創建一個(在動態數據之類的背後),那麼我不確定你需要做什麼(我已經在每個應用程序實例的基礎上處理了這個,但不是針對一個單一應用程序)。

要記住的關鍵是,.config中的數據連接字符串是默認值,但不一定是可以用於數據上下文的唯一連接字符串。