迁移C#应用程序以连接到PostGres数据库

时间:2017-09-05 11:19:15

标签: c# database postgresql database-migration

我继承了使用OleDb连接数据库的C#(Windows 10,dot net 2.0)数据库应用程序的维护。

OleDb已被使用,因为它允许以前版本的应用程序只需更改连接字符串即可在数据库(MS Access,SQL Server,Oracle等)之间切换。

现在应用程序将被移动到PostGres数据库。我已经成功设法使用Npgsql.NpgsqlConnection或System.Data.OleDb.OleDbConnection连接到数据库(使用此处的Intillisoft postgres数据提供程序... http://www.pgoledb.com

OleDb提供者要求收取过高的费用(该申请由慈善机构主办,我在自愿的基础上开展工作)。所以我将不得不使用Npgsql.NpgsqlConnection类,但是在应用程序中传递了几百个OleDbConnection对象。

我的目标是(按重要性排列)

  1. 将应用程序迁移到PostGre
  2. 对代码进行最少的更改
  3. 保持在数据源之间切换的能力(如果可能)
  4. 我想就实现这些目标的最佳方法提出一些建议。我希望有一些方法来创建我自己的类OleDbConnection,它将链接到System.Data.OleDb.OleDbConnection或Npgsql.NpgsqlConnection,具体取决于参数。这将保持数据源灵活性并将代码更改保持在最低限度 - 但我不知道这是否可行,更不用说如何做了!

    由于

1 个答案:

答案 0 :(得分:2)

当您编程接口时,切换DB供应商变得更加简单。在将程序的核心逻辑迁移到其他RDBMS之前,需要先修复特定连接类型的实例。

数据库连接的通用接口是IDbConnection:OleDbConnection和NpgsqlConnection都实现它。浏览源代码树,将所有出现的OleDbConnection替换为IDbConnection,然后重新编译项目。您可能需要将其他类型转换为接口,例如OleDbCommand到IDbCommand。

如果此步骤成功(应该是),则剩余的迁移将更加简单。如果重新编译时出现错误,则需要询问有关转换特定于OleDB的代码的具体问题。