2015-01-09 38 views
1

我正在開發支持MySQL的C#中的桌面應用程序,我有以下幾個問題開發應用程序支持多個數據庫

1)是否有可能開發應用程序的一個版本,將支持根據客戶的需求,不同的數據庫?我的意思是,如果我想給某人的應用程序用於測試目的,支持一個Access數據庫或將該應用程序安裝到已安裝了MySQL或SQL的客戶端

2)如果以上情況屬實,我該如何實現這一目標?

回答

0

馬諾斯,

這是可行的,你的應用程序將像所有的數據庫一樣工作。但是,如果它們具有不同版本的MySQL服務器,如5.1,5.5,5.6需要更改某些數據庫和應用程序代碼級別更改。

0

您可以使用實體框架(通過代碼優先)爲您的數據庫層代碼,它可以在應用程序app.config中配置以用於MS Sql Server,Sql Compact Edition,Sql Express,MySql和SQLite ,還有其他可能。

這是關於讓EF與PostreSQL一起工作的博客,但我不建議支持它,它很單調乏味,而且會碰到或錯過。

或者,您可以使用PetaPoco(A Micro ORM),它也支持不同的數據提供者,但您仍然必須自己編寫Select Queries,這將需要爲活動數據提供者編寫寫入SQL查詢。

實體框架使用Providers for Entity Framework(包括SQL查詢生成器)爲您編寫所有SQL。

但是,根據您的應用程序的性質,我建議您只使用SQLite 100%。您可以將其嵌入到您的應用程序中,而無需安裝數據庫服務器軟件。然後,您可以依靠PetaPoco或您自己的數據層,而無需擔心SQL查詢轉換以及數據庫服務器的差異。

我會推薦去NoSql,但在我看來,沒有免費的NoSql解決方案(我知道)現在在.Net平臺上非常可行。

在能夠支持(很多數據庫服務器)而無需自己管理任何代碼的情況下,Entity Framework可能是最好的解決方案。

在你擊落Entity Framework之前,考慮一下你可以使用CodeFrist來自動生成數據庫並對其進行升級。例如。您可以創建定義您的表和其上的列的實體(它們可以相互繼承以重複使用其他表中的列名/類型)。您可以創建遷移類,以定義具有更改的新版本,以便您可以自動將其遷移。將數據庫的X.1版本遷移到X.9等。它非常方便。

相關問題