2015-01-09 37 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等。它非常方便。

相关问题