2012-03-05 66 views
0

我正在開發一個asp.net應用程序,目前我使用Sql Server 2008作爲後端。 但是我被要求開發一個應用程序與多個數據庫(oracle,sql server,mysql等)。有沒有可能實現這一點。這是一個可行的解決方案。與此相關的可能的缺點可能是什麼。 謝謝具有多個數據庫的Asp.net應用程序

+0

你的意思是一個應用程序同時使用所有這些不同的數據庫*,或者一個應用程序被安裝使用* SQL Server,Oracle,MySQL等 – PhilPursglove 2012-03-05 12:18:45

+0

@PhilPursglove ,,,數據庫可以使用任何上面提到的數據庫之一,,我的意思是它應該是靈活的,以便與任何一個兼容 – freebird 2012-03-05 12:28:23

回答

0

是的,這是可行的。您需要在web.config中爲每種數據庫類型(和目錄)提供一個連接字符串,並且您可能需要在服務器上安裝不同的驅動程序(如ODBC驅動程序)。

我能想到的唯一缺點就是我無法輕鬆地在數據庫之間連接表。如果你有做到這一點,你需要從單個數據庫表,要麼選擇:通過表

  1. 循環在你的代碼隱藏和手動處理像參加會的數據。
  2. 或將選定的表插入其中一個數據庫的臨時表中,然後使用該服務器進行連接。
1

這應該是可行的,但它可能並不容易。

您需要使用您隔離每個數據庫的詳細信息的數據訪問層,因爲每個數據庫都會有略有不同的語法在它的語言,意思是你(可能)將不能夠寫一個查詢這將在他們所有的工作。你還沒說你的系統的域名是什麼,但是,讓我們說,書店的DAL會有像GetBooks方法,GetBookGetCustomer

底下你DAL你可能會再有一組不同的.NET程序集,每個.NET程序集都知道如何針對一個數據庫運行查詢(SQL Server,Oracle等)。當您的DAL中的某個方法被調用時,您的DAL將其傳遞到相應的程序集以實際進行調用並通過DAL將結果返回給應用程序。您的DAL需要能夠在程序集中創建類的實例,有幾種不同的方法可以做到這一點,但我建議MEF可能是最直接的。

缺點:

  1. 因爲你需要通用的,這是不可能的,你就可以使用 任何一個數據庫的具體特徵

  2. 這將需要更長的時間,因爲每個您需要在DAL中爲其編寫代碼,然後爲每個單獨的數據庫程序集編寫代碼,以及數據庫本身的任何SQL編碼,,然後針對每個數據庫對其進行測試。

+1

+1 @Freebird我傾向於在這種情況下使用與此不相似的方法實現存儲庫模式 - > http:// msdn .microsoft.com/EN-US /庫/ aa973811.aspx。在這裏,控制反轉允許你在BL中定義倉庫的接口,然後將其留給Datalayer和RespositoryFactory來處理其餘部分。 HTH – SeanCocteau 2012-03-05 14:05:24

+0

@PhilPursglove ,,,非常感謝,,, m對這個話題做了更多的研究,,,當我打算去找它的時候,可能再次聯繫你一些額外的指導,謝謝 – freebird 2012-03-06 07:21:23

0

解決此問題的另一種方法是使用SQL Server作爲連接不同數據庫的層。 SQL Server 2005和更高版本有一個稱爲Linked Servers的功能。這會讓你鏈接到其他數據庫。

這種方法將允許您將數據層建模爲一個數據庫,並讓SQL Server抽象出多個數據庫的複雜性。

您還可以查看名爲OPENROWSET的SQL Server功能。這將允許您查詢其他數據庫而無需設置鏈接服務器。

+0

,,,謝謝很多,,,生病了,我必須回到你身後,當我對此進行研究時,請回復。謝謝 – freebird 2012-03-06 07:19:38

+1

我希望它有幫助。 – 2012-03-07 02:54:55

相關問題